日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Geronimo入门与进阶

發(fā)布時(shí)間:2023/12/18 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Geronimo入门与进阶 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文來(lái)自于本人在www.matrix.org.cn網(wǎng)站翻譯的文章

原文為 這里

譯文為 這里

原文作者Kunal Jaggi 是一個(gè)獨(dú)立的Java咨詢顧問(wèn),主要關(guān)注Java技術(shù)中的企業(yè)解決方案。?


Geronimo是一個(gè)最新的Apache發(fā)起的開源的應(yīng)用服務(wù)器.Geronimo使用Apache V2.0 許可證,它是一個(gè)通過(guò)Java EE 1.4 認(rèn)證的應(yīng)用服務(wù)器。


在這篇文章中,我們將主要涵蓋如下內(nèi)容 :
1 . 為什么要Geronimo
??? 2 . A Look Under the Hood
??? 3 . 使用Geronimo
??? 4 . 應(yīng)用程序范例
????5 . 部署的計(jì)劃
????6 . 寫你的第一個(gè)Geronimo程序
????7 . 構(gòu)建這個(gè)程序
????8 . 部署這個(gè)程序
????9 . 測(cè)試這個(gè)程序

Geronimo是基于一些最好的開源的技術(shù)的集合,一個(gè)蓬勃發(fā)展的社區(qū)支持的一個(gè)開源服務(wù)器,它給整個(gè)企業(yè)市場(chǎng)帶來(lái)了風(fēng)暴。這篇文章將介紹Geronimo以及在Geronimo上開發(fā)和部署一個(gè)簡(jiǎn)單的Java EE 的web程序所需要的基本點(diǎn)。


為什么需要Geronimo?

Geronimo 不是市場(chǎng)上唯一的一個(gè)開源的應(yīng)用服務(wù)器。還有一些諸如ObjectWeb的JOnAS等其他開源的Java EE 應(yīng)用服務(wù)器。然而,Geronimo完成了一個(gè)其他應(yīng)用服務(wù)器沒有做到的需求。我們可以使用Geronimo來(lái)很容易的集成其他組件。它的主要目標(biāo)就是從 支持傳統(tǒng)的構(gòu)建過(guò)程調(diào)整到對(duì)具體的應(yīng)用程序的要求。Geronimo提供了一些選擇。例如,如果你不需要事務(wù)管理,你可以使用一個(gè)web應(yīng)用層的服務(wù)器, 比如所Tomcat或者Jetty。Geronimo可以很容易的支持傳統(tǒng)組件的聚合。簡(jiǎn)而言之,你可是使得它成為你需要的那種樣子。這就意味著 Geronimo 不僅僅只是一個(gè)應(yīng)用服務(wù)器,它提供了一個(gè)框架來(lái)將不同的組件結(jié)合在一起。
Geronimo并沒有做一些重復(fù)的工作,它也不是現(xiàn)有的開源框架或是工具的模仿。相反,Geronimo繼承了許多開源的工程,下面列出其中的一些:

Tomcat Jetty OpenEJB ActiveMQ HOWL

Geronimo最優(yōu)秀的一個(gè)特性就是它不需要重啟。和其他web層和business層的容器在改變?nèi)魏闻渲弥蠖夹枰貑⒉煌?#xff0c;Geronimo從一開始就設(shè)計(jì)成為支持動(dòng)態(tài)class裝載,能夠像一個(gè)不中斷的服務(wù)那樣一直運(yùn)行。

A Look Under the Hood

Geronimo 是一個(gè)叫做Geronimo beans 或者就是GBeans的組件的松散的結(jié)合。GBeans 是Geronimo的構(gòu)建塊,在Ioc容器的概念上的可管理的beans,他們用于向Geronimo內(nèi)核增加服務(wù)。Geronimo中幾乎所有的東西都 是一個(gè)GBean.

通過(guò)部署新的GBeans,我們可以很容易的擴(kuò)展Geronimo。GBeans定義了服務(wù)器的能力,當(dāng)它被部署 的時(shí)候通時(shí)注冊(cè)到內(nèi)中中。Gbean組件遵循一個(gè)特性的生命周期,內(nèi)核創(chuàng)建他們, injects dependencies, 事件通知, 然后調(diào)用他們的方法。每一個(gè)GBean都可以維持一個(gè)狀態(tài),依賴于其他的GBeans,包含了定義它的功能的邏輯。GBean架構(gòu)時(shí)一個(gè)DI配置和管理系 統(tǒng)。一個(gè)GBean時(shí)通過(guò)一個(gè)plan插入到內(nèi)核中的,這個(gè)plan就是基于XML的配置文件。此外,組件可以通過(guò)修改配置文件來(lái)很輕松的移除。想要了解 更多的關(guān)于 Geronimo 的GBean架構(gòu)和Ioc容器,請(qǐng)參閱 資源 一節(jié)


開始使用Geronimo

Geronimo要求Java SE 1.4(或者更高的版本,但是必須早于SE 5)。最新的milestone 發(fā)布版本是M5。將Geronimo和Tomcat容器解壓到某個(gè)地方,然后將環(huán)境變量中的GERONIMO_HOME設(shè)為這個(gè)地方。

通過(guò)啟動(dòng)Geronimo 的內(nèi)核來(lái)啟動(dòng)Geronimo 。一旦Geronimo 開始運(yùn)行了,它將裝載所以預(yù)定義的模塊以及上面提到的其他應(yīng)用模塊(為了簡(jiǎn)要起見,并沒有列出所有的域)
D:/>cd %GERONIMO_HOME%
D:/geronimo-1.0>java -jar bin/server.jar
Booting Geronimo Kernel (in Java 1.4.2_08)...
Starting Geronimo Application Server
[********************] 100%??44s Startup complete
??Listening on Ports:
????1527 0.0.0.0 Derby Connector
????8080 0.0.0.0 Tomcat Connector HTTP
????8443 0.0.0.0 Tomcat Connector HTTPS

??Started Application Modules:
????EAR: geronimo/daytrader-derby-tomcat/1.0/car
????EAR: geronimo/uddi-tomcat/1.0/car
????WAR: geronimo/welcome-tomcat/1.0/car

??Web Applications:
????http://WINKJ185011-NZR:8080/
????http://WINKJ185011-NZR:8080/console
Geronimo Application Server started

此 后,通過(guò)訪問(wèn)網(wǎng)址http://localhost:8080/console 來(lái)顯示Geronimo 控制窗口 來(lái)檢驗(yàn)Geronimo 的安裝,如圖一所示。使用默認(rèn)的用戶名(system)和密碼(manager)。停止Geronimo 也是很容易的,按下Ctrl+C 將停止應(yīng)用服務(wù)器。


Figure 1. Apache Geronimo Console

范例
對(duì)于一篇這樣的介紹性文章,我們將創(chuàng)建一個(gè)簡(jiǎn)單的web應(yīng)用程序,并將它部署在Geronimo上。請(qǐng)確定如下的環(huán)境變量都正確的設(shè)置了。
Environment variable ????????Purpose
JAVA_HOME ????????Indicates the base directory of your standard Java SE installation.
GERONIMO_HOME ????????Set to the root directory of your Geronimo installation.
ANT_HOME ????????Set to the root directory of your Ant installation.
GERONIMO_DEV ????????Indicates the base directory of application development space.
PATH ????????????????????????Ensure that ANT_HOME/bin is in your PATH.


在GERONIMO_DEV路徑下創(chuàng)建如下的目錄:
?????????etc: All deployment plans are kept inside this directory.
?????????src: This directory is used for placing any servlets and other Java source files.
?????????web: All public JSP documents are placed inside this directory.


部署plan

我們需要兩個(gè)部署plan,叫做web.xml和geronimo-web.xml。在我們進(jìn)入這些文件之前,我先來(lái)介紹一下他們的差別。下面的一張表將會(huì)幫助你區(qū)別這兩個(gè)部署plan之間的不同以及他們所扮演的角色。

web.xml : 標(biāo)準(zhǔn)Java EE web 部署描述符號(hào)

geronimo-web.xml : Geronimo-specific 的部署描述.

編碼第一個(gè)Geronimo程序
我們通過(guò)創(chuàng)建一個(gè)簡(jiǎn)單的JSP頁(yè)面來(lái)歡迎用戶并顯示當(dāng)前的日期和時(shí)間。創(chuàng)建如下的hello.jsp文件,并把它放在GERONIMO_DEV/web 目錄中。

……
<jsp:useBean id="currentdate"
????class="java.util.Date" />


……
<h3>Hello world from Geronimo!! on
${currentdate}</h3>
……

隨后,創(chuàng)建如下的兩個(gè)部署plan,并將他們放在GERONIMO_DEV/etc目錄中。第一個(gè)部署paln,web.xml 是一個(gè)標(biāo)準(zhǔn)的Java EE部署描述符 ,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

????<display-name> Hello JSP Web App
????</display-name>
????<description>First Geronimo App
????</description>
</web-app>

下面的代碼段顯示了Geronimo具體的部署 plan, geronimo-web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.0"
xmlns:sec="http://geronimo.apache.org/xml/ns/security-1.0"
configId="com/onjava/safari/myApp">


??<context-root>/myApp</context-root>
??<context-priority-classloader>false/
??</context-priority-classloader>
</web-app>

configId屬性描述了我們程序的名字,com/onjava/safari/myApp。之后我們?cè)O(shè)置上下文(/myApp),這個(gè)目錄就是我們的程序部署到Geronimo中存放的地方了。

構(gòu)建這個(gè)程序
之后我們使用ant做一個(gè)增量編譯。我們需要一個(gè)Ant的文件(build.xml),放置在GERONIMO_DEV路徑下。build.xml是一個(gè)格式良好的XML文件,它描述了我們程序的構(gòu)建過(guò)程。
<project name="GeronimoApp" default="war"
basedir=".">

??<property environment="env"/>

<path id="cp">
??????<pathelement path="${java.class.path}"/>
??????<fileset dir="${env.GERONIMO_HOME}/
??????repository/org.apache.geronimo.specs/jars">
????????<include name="*.jar"/>
??????</fileset>
????</path>

<target name="prepare">
????<mkdir dir="dist"/>
????<mkdir dir="classes"/>
????<mkdir dir="build"/>

????<delete>
???? <fileset dir="classes"
?????? includes="**/*.class"/>
????</delete>

????<mkdir dir="build/WEB-INF"/>
????<mkdir dir="build/WEB-INF/lib"/>

????<copy file="etc/web.xml" todir="build/WEB-INF"/>
????<copy file="etc/geronimo-web.xml"
????todir="build/WEB-INF" />

????<copy todir="build">
??????<fileset dir="web"/>
????</copy>

</target>

<target name="compile" depends="prepare">
????<javac srcdir="src" destdir="classes"
????debug="on" deprecation="off">
??????<classpath refid="cp"/>
????</javac>
</target>

<target name="war" depends="compile">
?? <war destfile="dist/safari.war"
?? webxml="build/WEB-INF/web.xml">
????<classes dir="classes" />
??????<fileset dir="build">
????????<exclude name="WEB-INF/web.xml"/>
??????</fileset>
????</war>
</target>

</project>

下面是我們運(yùn)行完ant腳本后的輸出。
D:/>cd %GERONIMO_DEV%

D:/gdev>ant
Buildfile: build.xml

prepare:
??[mkdir] Created dir: D:/gdev/dist
??[mkdir] Created dir: D:/gdev/classes
??[mkdir] Created dir: D:/gdev/build
??[mkdir] Created dir: D:/gdev/build/WEB-INF
??[mkdir] Created dir: D:/gdev/build/WEB-INF/lib
?? [copy] Copying 1 file to D:/gdev/build/WEB-INF
?? [copy] Copying 1 file to D:/gdev/build/WEB-INF
?? [copy] Copying 1 file to D:/gdev/build

compile:

war:
??????[war] Building war: D:/gdev/dist/safari.war

BUILD SUCCESSFUL
Total time: 3 seconds


在/dist目錄中創(chuàng)建好了一個(gè).war的文件,這個(gè)文件可以部署在Geronimo應(yīng)用服務(wù)器裝載的Tomcat容器里。

部署這個(gè)程序


這 兒我們使用Geronimo的部署器來(lái)部署.war文件。Geronimo為這個(gè)功能提供了一個(gè)”deploy“的命令行。里必須在命令行使用管理員帳戶 登陸(system/manager)。如果沒有顯式的說(shuō)明,部署器將會(huì)向你提出這個(gè)要求。下面的命令部署了這個(gè).war文件。
D:/>cd %GERONIMO_HOME%

D:/geronimo-1.0>java -jar bin/deployer.jar --user
system --password manager deploy
%GERONIMO_DEV%/dist/safari.war
????Deployed com/onjava/safari/myApp @
????http://WINKJ185011-NZR:8080/myApp

這 個(gè)部署器可以很智能的指出所部署的組件的類型。我們只需要給它我們的.war文件,然后這個(gè)部署器將會(huì)把這個(gè)文件當(dāng)作一個(gè)WEb程序來(lái)部署。 deploy.jar文件將基于提供給Geronimo服務(wù)器的部署plan(geronimo-web.xml)來(lái)部署這個(gè)應(yīng)用模塊。
作為另一種選擇,你還可以通過(guò)Geronimo的控制臺(tái)窗口來(lái)手動(dòng)的部署.war文件。從左邊的控制臺(tái)面板中選擇”Deploy New link“,找到你的WAR文件,然后點(diǎn)擊”install“按鈕。


Figure 2. Deploy new web app in Geronimo

一旦部署完畢,這個(gè)web程序?qū)⒊霈F(xiàn)在Geronimo的控制臺(tái)窗口的”Installed Web Applications“的列表中。如圖3所示。


Figure 3. Installed Web Applications

測(cè)試這個(gè)程序


現(xiàn)在可是成功的運(yùn)行它了。開啟一個(gè)瀏覽器,然后嘗試這樣的URL”http://localhost:8080/myApp/hello.jsp.“ Tomcat Web容器將處理并執(zhí)行JSP,如下圖所示:


Figure 4. Test JSP running on Geronimo app server

結(jié)論
Geronimo天生就是模塊化的。這使得像Apache Derby這些Geronimo包含的模塊可以很容易的裝載。像Spring這樣的集成框架是沒有痕跡的。所以,是時(shí)候來(lái)嘗試一下Geronimo了。

資源
本文代碼: 下載

總結(jié)

以上是生活随笔為你收集整理的Geronimo入门与进阶的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。