Geronimo入门与进阶

    技术2022-05-11  108

    本文来自于本人在www.matrix.org.cn网站翻译的文章

    原文为 这里

    译文为 这里原文作者Kunal Jaggi 是一个独立的Java咨询顾问,主要关注Java技术中的企业解决方案。  Geronimo是一个最新的Apache发起的开源的应用服务器.Geronimo使用Apache V2.0 许可证,它是一个通过Java EE 1.4 认证的应用服务器。 在这篇文章中,我们将主要涵盖如下内容 :     1 . 为什么要Geronimo     2 . A Look Under the Hood     3 . 使用Geronimo     4 . 应用程序范例     5 . 部署的计划     6 . 写你的第一个Geronimo程序     7 . 构建这个程序     8 . 部署这个程序     9 . 测试这个程序 Geronimo是基于一些最好的开源的技术的集合,一个蓬勃发展的社区支持的一个开源服务器,它给整个企业市场带来了风暴。这篇文章将介绍Geronimo以及在Geronimo上开发和部署一个简单的Java EE 的web程序所需要的基本点。 为什么需要Geronimo? Geronimo 不是市场上唯一的一个开源的应用服务器。还有一些诸如ObjectWeb的JOnAS等其他开源的Java EE 应用服务器。然而,Geronimo完成了一个其他应用服务器没有做到的需求。我们可以使用Geronimo来很容易的集成其他组件。它的主要目标就是从 支持传统的构建过程调整到对具体的应用程序的要求。Geronimo提供了一些选择。例如,如果你不需要事务管理,你可以使用一个web应用层的服务器, 比如所Tomcat或者Jetty。Geronimo可以很容易的支持传统组件的聚合。简而言之,你可是使得它成为你需要的那种样子。这就意味着 Geronimo 不仅仅只是一个应用服务器,它提供了一个框架来将不同的组件结合在一起。 Geronimo并没有做一些重复的工作,它也不是现有的开源框架或是工具的模仿。相反,Geronimo继承了许多开源的工程,下面列出其中的一些: Tomcat Jetty OpenEJB ActiveMQ HOWL Geronimo最优秀的一个特性就是它不需要重启。和其他web层和business层的容器在改变任何配置之后都需要重启不同,Geronimo从一开始就设计成为支持动态class装载,能够像一个不中断的服务那样一直运行。 A Look Under the Hood Geronimo 是一个叫做Geronimo beans 或者就是GBeans的组件的松散的结合。GBeans 是Geronimo的构建块,在Ioc容器的概念上的可管理的beans,他们用于向Geronimo内核增加服务。Geronimo中几乎所有的东西都 是一个GBean. 通过部署新的GBeans,我们可以很容易的扩展Geronimo。GBeans定义了服务器的能力,当它被部署 的时候通时注册到内中中。Gbean组件遵循一个特性的生命周期,内核创建他们, injects dependencies, 事件通知, 然后调用他们的方法。每一个GBean都可以维持一个状态,依赖于其他的GBeans,包含了定义它的功能的逻辑。GBean架构时一个DI配置和管理系 统。一个GBean时通过一个plan插入到内核中的,这个plan就是基于XML的配置文件。此外,组件可以通过修改配置文件来很轻松的移除。想要了解 更多的关于 Geronimo 的GBean架构和Ioc容器,请参阅 资源 一节 开始使用Geronimo Geronimo要求Java SE 1.4(或者更高的版本,但是必须早于SE 5)。最新的milestone 发布版本是M5。将Geronimo和Tomcat容器解压到某个地方,然后将环境变量中的GERONIMO_HOME设为这个地方。 通过启动Geronimo 的内核来启动Geronimo 。一旦Geronimo 开始运行了,它将装载所以预定义的模块以及上面提到的其他应用模块(为了简要起见,并没有列出所有的域) D:/>cd %GERONIMO_HOME%D:/geronimo-1.0>java -jar bin/server.jarBooting 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/consoleGeronimo Application Server started 此 后,通过访问网址http://localhost:8080/console 来显示Geronimo 控制窗口 来检验Geronimo 的安装,如图一所示。使用默认的用户名(system)和密码(manager)。停止Geronimo 也是很容易的,按下Ctrl+C 将停止应用服务器。 Figure 1. Apache Geronimo Console 范例 对于一篇这样的介绍性文章,我们将创建一个简单的web应用程序,并将它部署在Geronimo上。请确定如下的环境变量都正确的设置了。 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路径下创建如下的目录: •        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 我们需要两个部署plan,叫做web.xml和geronimo-web.xml。在我们进入这些文件之前,我先来介绍一下他们的差别。下面的一张表将会帮助你区别这两个部署plan之间的不同以及他们所扮演的角色。 web.xml : 标准Java EE web 部署描述符号 geronimo-web.xml : Geronimo-specific 的部署描述. 编码第一个Geronimo程序 我们通过创建一个简单的JSP页面来欢迎用户并显示当前的日期和时间。创建如下的hello.jsp文件,并把它放在GERONIMO_DEV/web 目录中。 ……<jsp:useBean id="currentdate"    class="java.util.Date" />……<h3>Hello world from Geronimo!! on${currentdate}</h3>…… 随后,创建如下的两个部署plan,并将他们放在GERONIMO_DEV/etc目录中。第一个部署paln,web.xml 是一个标准的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/j2eehttp://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-appxmlns="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。之后我们设置上下文(/myApp),这个目录就是我们的程序部署到Geronimo中存放的地方了。 构建这个程序 之后我们使用ant做一个增量编译。我们需要一个Ant的文件(build.xml),放置在GERONIMO_DEV路径下。build.xml是一个格式良好的XML文件,它描述了我们程序的构建过程。 <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> 下面是我们运行完ant脚本后的输出。 D:/>cd %GERONIMO_DEV%D:/gdev>antBuildfile: build.xmlprepare:  [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/buildcompile:war:      [war] Building war: D:/gdev/dist/safari.warBUILD SUCCESSFULTotal time: 3 seconds 在/dist目录中创建好了一个.war的文件,这个文件可以部署在Geronimo应用服务器装载的Tomcat容器里。 部署这个程序 这 儿我们使用Geronimo的部署器来部署.war文件。Geronimo为这个功能提供了一个”deploy“的命令行。里必须在命令行使用管理员帐户 登陆(system/manager)。如果没有显式的说明,部署器将会向你提出这个要求。下面的命令部署了这个.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 这 个部署器可以很智能的指出所部署的组件的类型。我们只需要给它我们的.war文件,然后这个部署器将会把这个文件当作一个WEb程序来部署。 deploy.jar文件将基于提供给Geronimo服务器的部署plan(geronimo-web.xml)来部署这个应用模块。 作为另一种选择,你还可以通过Geronimo的控制台窗口来手动的部署.war文件。从左边的控制台面板中选择”Deploy New link“,找到你的WAR文件,然后点击”install“按钮。 Figure 2. Deploy new web app in Geronimo 一旦部署完毕,这个web程序将出现在Geronimo的控制台窗口的”Installed Web Applications“的列表中。如图3所示。 Figure 3. Installed Web Applications 测试这个程序 现在可是成功的运行它了。开启一个浏览器,然后尝试这样的URL”http://localhost:8080/myApp/hello.jsp.“ Tomcat Web容器将处理并执行JSP,如下图所示: Figure 4. Test JSP running on Geronimo app server 结论 Geronimo天生就是模块化的。这使得像Apache Derby这些Geronimo包含的模块可以很容易的装载。像Spring这样的集成框架是没有痕迹的。所以,是时候来尝试一下Geronimo了。 资源 本文代码: 下载

    最新回复(0)