博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Geronimo 入门

Posted on 2007-03-17 14:53  LeeCheng  阅读(1778)  评论(0编辑  收藏  举报
Apache Geronimo 是一个大型的开放源码项目,它的开发社区非常活跃,用户也在不断增长,新用户很可能对它的规模和活跃程度感到吃惊。即使熟悉 Java™ 2 Platform, Enterprise Edition (J2EE) 的开发人员有时也会被这个迅速发展的项目弄得晕头转向。本指南为 Geronimo 新用户提供一个容易掌握的起点,帮助您在 Geronimo 中找到需要的东西。您还可以找到一些 Geronimo 开发问题的答案,从初级主题到如何向 Geronimo 提交代码。请准备好,我们要进入 Geronimo 这个热闹的世界了。

本指南的第一部分:

  • 介绍 Apache Geronimo 应用服务器和开放源码 Geronimo 项目。
  • 说明在哪里下载这个服务器以及如何安装它。
  • 逐步指导您创建第一个 Geronimo 应用程序。

本指南的第二部分包含一系列常见问题(FAQ)。问题的范围从“我要从哪里获得最新的技术信息?”到“如何联系社区中的 Geronimo 开发人员?”,您会在这里找到一些最常见的 Geronimo 问题的答案。

关于 Geronimo 应用服务器

Apache Geronimo 项目(参见 参考资料 中的一个链接) 的目标是围绕一个完全兼容的开放源码 J2EE 1.4 应用服务器,创建一个活跃的全球 J2EE 用户和开发人员社区。

在编写本文时,项目团队正在为发布 1.0 版而努力,在 1.0 版这个服务器将完全经过 J2EE 1.4 认证。同时,还有一些 Geronimo 里程碑版本(参考资料 中的一个链接提供了里程碑版本下载)。这些里程碑版本包括二进制发行版,它们为开发和评估提供了功能完整的服务器环境。

为了让这种服务器获得广泛接受,Geronimo 开发人员在其中集成了几个现有的经过考验的开放源码项目。这些项目中有许多已经很成熟而且广为人知。实际上,您可能已经使用过它们。表 1 列出了 Geronimo 中集成的一些开放源码项目。



表 1. Geronimo 中集成的开放源码项目
开放源码项目 说明
Apache Tomcat 5.5 支持 Java Servlet 2.4 和 JavaServer Pages™(JSP) 2.0 的 Web 层应用服务器
Jetty 支持 Java Servlet 2.4 和 JavaServer Pages™(JSP) 2.0 的 Web 层应用服务器 —— 可以替代 Tomcat 服务器
ActiveMQ 开放源码的 Java Message Service(JMS) 1.1 应用程序提供者,支持消息驱动 bean(MDB)
OpenEJB 开放源码的 Enterprise JavaBeans(EJB)容器系统和 EJB 服务器,支持 Enterprise JavaBeans 2.1,包括 Container Managed Persistence 2(CMP2)和 EJB Query Language(EJBQL)
Apache Axis 和 Scout 一种 Simple Object Access Protocol(SOAP)实现(Axis)和 JSR 93(JAXR)实现(Scout),用于 Web 服务和 Web Services Interoperability Organization(WS-I) Basic Profile 支持
Apache Derby 完全成熟的关系数据库管理系统(RDBMS),支持本机 Java Database Connectivity(JDBC)

除了支持 Geronimo 的 J2EE 核心的开放源码项目(即 表 1 中列出的项目)之外,Geronimo 社区还贡献了两个重要的众所周知的开放源码项目。这些项目列在 表 2 中,它们已经集成在 Geronimo 中并且经过测试,某些 Geronimo 二进制发行版包含它们。



表 2. 集成在 Geronimo 中的开放源码项目
开放源码项目 说明
Spring Framework 流行的应用程序框架,用于从轻量级 Inversion of Control(IoC)组件构建应用程序
ServiceMix 开放源码工具集,支持 Java Business Integration(JBI)并且为面向服务体系结构(SOA)实现提供 Enterprise Service Bus(ESB)

如果您使用过以上的开放源码项目之一,那么学习 Geronimo 的过程就会大大缩短。

可以在 Geronimo 上运行的应用程序、应用服务和组件

表 1 中列出的集成的服务使您能够在 Geronimo 上运行各种应用程序、应用服务和组件。包括:

  • 基于 JSP 和 servlet 的 Web 应用程序
  • 包含 JSP、servlet 和 EJB 的企业应用程序
  • 关系数据库服务
  • 基于 JMS 的消息队列组件
  • MDB 组件
  • 基于 Spring 的轻量级应用程序组件
  • Web 服务
  • JBI 服务组件

不要再拖延了,现在就来建立您自己的 Geronimo 服务器。






回页首


在 5 分钟内建立和运行 Geronimo

在开始之前,对照下面的检查单进行检查,确保具备了这些条件:

  1. 高速的互联网连接,用于下载服务器代码。
  2. Sun Java 2 Platform,Standard Edition(J2SE) Development Kit(JDK) 1.4.2_08 或更新的版本(JDK 1.5 当前还不可用)已经在系统上安装和运行了。
  3. Microsoft® Windows® 2000、Windows Server 2003 或 Windows XP(对于 Windows 操作系统用户)。
  4. 包含已经能够工作的 Sun JDK 1.4.2 应用程序的大多数 Linux® 版本,或者经过测试并且被支持的 Red Hat Enterprise Linux 3 或 4,或者 SUSE Linux Enterprise Server 9(对于 Linux 操作系统用户)。
  5. Sun Solaris™ 9 和 10。
  6. 至少具有 1.6 GHz Intel® Pentium® 4 处理器(或功能相当的处理器),理想情况下应该有 1 GB RAM(尽管 256 MB 也能够工作)。
  7. 200 MB 或更多的空闲硬盘空间,用于安装和运行 Geronimo(60 MB 勉强够用)。

下载 Geronimo

检查完上面的条件之后,从 Apache Geronimo 站点下载 Geronimo 最新的里程碑版本(参见 参考资料 中的一个链接),本文使用 Milestone 4(即 M4)。

目前选择 .zip 或 .jar 安装;这是最快的安装方式。还有 .exe 安装程序,它提供了更多的配置选项,适合以后的安装。

在 Windows 平台上的防火墙警告
在某些 Windows 操作系统版本上有防火墙,防火墙会警告说有一个应用程序试图接收网络请求。为了让 Geronimo 正常工作,应该允许这种访问,或者关闭防火墙。

将 .zip 或 .jar 安装文件解压到您选择的安装目录中。在本文中,这个目录称为 Geronimo_installation_directory。

默认安装仅仅是将发行版解压。现在就可以运行服务器了。

启动 Geronimo

将当前工作目录改为 Geronimo_installation_directory,然后输入以下命令:

java -jar bin/server.jar

服务器被打包为 server.jar,可以从 Geronimo_installation_directory 运行。

图 1 显示了服务器成功启动时的控制台。您看到的屏幕应该与此相似。



图 1. 启动 Geronimo 服务器
启动 Geronimo 服务器

图 1 中,几个集成的服务报告了它们在系统上监听请求的 TCP 端口。如果需要关闭服务器,那么在控制台中输入 control-c。Geronimo 1.0 版将支持把服务器安装为系统服务,这使它无需控制台就能够运行。





回页首


在 10 分钟内构建您的第一个 Geronimo 应用程序

清单 1 显示了一个简单的 JSP Web 应用程序。它只包含一个 JSP,输出 Hello world! 消息。这个 JSP 还使用标准的 <jsp:useBean> 指令和 Expression Language(EL)来输出当前的服务器时间。



清单 1. Hello world JSP
<html>
            <head>
            <jsp:useBean id="datetime" class="java.util.Date" />
            <title>dw Getting Started with Geronimo</title>
            </head>
            <body>
            <h1>Hello world, from Geronimo!</h1>
            on ${datetime}
            </body>
            </html>
            

首先,创建一个称为 project_base 的工作目录来包含这个项目。在这个目录中,创建包含 清单 1 的内容的 hellojsp.jsp 文件。

现在,在 project_base 目录中创建子目录 WEB-INF。在 WEB-INF 目录中,创建 web.xml 文件,内容如 清单 2 所示。



清单 2. hellojsp.war 的 web.xml 部署描述文件
<?xml version="1.0" encoding="ISO-8859-1"?>
            <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">
            <description>
            developerWorks Getting Started with Geronimo
            - Hello JSP example
            </description>
            <display-name>
            IBM developerWorks getting started with Geronimo example
            </display-name>
            </web-app>
            

清单 2 是一个标准的兼容 Servlet 2.4 的 J2EE 部署描述文件。这个描述文件是 J2EE 1.4 标准针对 Web Application aRchive(.war)文件所需要的。

现在,回到 project_base 目录,使用以下命令创建 .war 文件:

jar cvf  hellojsp.war
            

现在有了一个能够部署到 Geronimo 服务器的 hellojsp.war 文件。

要部署这个简单的 Web 应用程序,将 hellojsp.war 文件复制到 Geronimo_installation 目录。在这个目录中,使用运行时部署器来部署这个应用程序:

java –jar bin/deployer.jar  --user system --password manager deploy hellojsp.war
            

Geronimo 部署器输出以下状态消息,表示这个 Geronimo 应用程序部署成功了:

Deployed hellojsp
            

现在启动浏览器,访问 URL http://localhost:8080/hellojsp/hellojsp.jsp。

默认的 Jetty 容器处理并执行这个 JSP(在 1.0 版中,将能够默认运行 Tomcat)。浏览器显示这个 JSP,如 图 2 所示。



图 2. Geronimo 中运行的 Hello world JSP
Geronimo 中运行的 Hello world JSP

恭喜!您已经完成了 Geronimo 服务器的安装和设置;甚至从头创建了一个应用程序并将它部署到了服务器上。

本指南的下一节为 Geronimo 新用户提供了一系列 FAQ。





回页首


Geronimo FAQ

如何查明我的 Geronimo 服务器上部署了什么?

使用运行时部署器列出服务器上部署的所有模块。采用的命令是:

java -jar bin/deployer.jar -user system -password manager list-modules

如果我在 Geronimo 中发现了 bug 或者需要新特性,那么应该怎么办?

Geronimo 项目使用 Apache Software Foundation 的 bug 和问题跟踪数据库(参见 参考资料 中的一个链接)来记录问题和特性请求。欢迎任何 Geronimo 用户提交 bug 和/或特性请求。

在提交 bug 或特性请求之前,检查目前公开的问题,确定别人没有报告过相同的 bug/特性。

在初次登录时,需要创建一个帐号。然后输入您发现的 bug 的描述。一定要详细描述重现这个 bug 的步骤,并且附上可能有帮助的任何文件。

在哪里能够找到更多关于 Geronimo 的技术信息?

可以先阅读 developerWorks 上关于 Geronimo 体系结构的概述(参见 参考资料 小节中这些文章的链接):

  • “Building a better J2EE server, the open source way”(developerWorks,2005 年 5 月)
  • “Geronimo! Part 1: The J2EE 1.4 engine that could”(developerWorks,2005 年 5 月)
  • “Geronimo! Part 2: Tame this J2EE 1.4 bronco”(developerWorks,2005 年 5 月)

 

下面是一些参考资料,可以通过它们查询更特定的 Geronimo 开发任务(参见 参考资料 小节中的链接):

  • 官方的 Geronimo 项目和社区 Web 站点是必不可少的信息源。
  • 如果要使用 JSP 和 Web 应用程序,请阅读“Powerful browser detection and custom JSP tags with Geronimo”(developerWorks,2005 年 9 月)。
  • 对于 EJB,请阅读“Dive into EJB Web applications with Geronimo”(developerWorks,2005 年 7 月)。
  • 如果要使用 JMS,请阅读“Magic with JMS, MDBs, and ActiveMQ in Geronimo”(developerWorks,2005 年 7 月)。
  • 关于数据库,请阅读“Three ways to connect a database to a Geronimo application server”(developerWorks,2005 年 6 月)。
  • 如果对 Web 服务感兴趣,那么阅读“J2EE Web services in Geronimo, Part 1”(developerWorks,2005 年 8 月)和“Deploy Web services in Apache Geronimo”(developerWorks,2005 年 6 月)。
  • 如果您是客户机或 GUI 开发人员,那么阅读“Create client applications for Geronimo”(developerWorks,2005 年 6 月)和“Connect a Java Swing application to a Geronimo server”(developerWorks,2005 年 7 月)。
  • “Build a secure enterprise infrastructure with Geronimo”(developerWorks,2005 年 7 月)讨论了 Geronimo 的安全实现。

可以在 developerWorks Apache Geronimo 参考资料页面上找到最新的 Geronimo 文章和教程(参见 参考资料)。

Geronimo 项目 wiki(参见 参考资料)是一个基于社区的信息站点,提供了许多由社区维护的关于 Geronimo 许多技术方面的信息。

有关于 Geronimo 的书吗?

有。每家主要的技术图书出版商都有关于 Geronimo 的书。这些书大多数针对 2005 年晚期和 2006 年早期的版本。Apache 的 Geronimo 图书清单列出了即将出版的 Geronimo 图书(参见 参考资料 中这个清单的链接)。

对于 Geronimo,有集成开发环境(IDE)支持吗?

有。Eclipse Web Tools Platform 项目提供了一个针对 Eclipse 的 Geronimo 插件(参见 参考资料 中这个 Web 页面的链接)。可以通过文章“Create, deploy, and debug Apache Geronimo applications”学习这个插件的特性(参见 参考资料)。一个 NetBeans 插件正在开发。

如何为 Geronimo 获得许可证?

Geronimo 是按照 Apache License,Version 2.0 颁发许可证的(参见 参考资料 中许可协议的链接),这是被业界广泛接受的最宽松的开放源码许可协议。称职的法律顾问才能完善地解释这个许可协议的意思,但是简单地说,在本质上您可以在项目中免费使用这个服务器,而不需要承担做贡献的义务。

开放源码软件是什么?下载和使用它们是合法的吗?IBM 会为它们负责吗?

关于这些问题,请访问 参考资料 小节中的 developerWork “New to open source” 参考资料中心。

谁开发了 Geronimo?

参见 Geronimo 提交者清单(见 参考资料 小节中的链接)。提交者就是对 Geronimo 源代码库有写访问权限的 Geronimo 服务器开发人员。当前的提交者团队是一个经过筛选的全球化专业开发人员团队,他们都对开发世界级的 J2EE 服务器感兴趣。其中还包括来自多家厂商的个人和雇员。如果您希望成为 Geronimo 开发人员,那么请阅读 如何变成提交者 的答案。

我认为 Geronimo 是一个 J2EE 服务器。为什么要把其他框架(比如 ServiceMix 和 Spring)集成到 Geronimo 发行版中?

实际上,Geronimo 绝不只是一个 J2EE 服务器。它是一个通用框架,能够将服务组件组合起来。Geronimo 中的 配件(assembly) 概念使您能够创建 Geronimo 的专门版本,其中只包含您需要的服务器组件。J2EE 服务器只是现有开放源码服务组件的一种特定配件。可以将任何其他服务组件集成到 Geronimo 中。“Integrate third-party components into Geronimo”(developerWorks,2005 年 8 月)提供了一个例子(参见 参考资料 中这篇文章的链接)。灵活的配件使 Geronimo 将来能够集成其他服务器。

在 Geronimo 方面我需要帮助。我可以向谁寻求帮助?

Apache Geronimo 用户邮件列表是您的最佳选择(参见 参考资料 中的链接)。许多社区成员以及开发团队会阅读这个列表。如果使用这个列表,您很可能能够迅速得到帮助。出于礼貌,您总是应该先搜索这个列表,看看您想问的问题是否已经被回答了,以免重复的问题干扰别人。

如果您的公司正在开发产品质量的 J2EE 应用程序,需要可靠的专家级的支持,那么您应该预订 IBM Support for Apache Geronimo 服务(参见 参考资料 中的链接)。

如何与 Geronimo 开发人员联系?

可以在 developerWorks Apache Geronimo 社区论坛上找到几个主要的 Geronimo 开发人员(参见 参考资料 中的链接)。他们可以回答技术问题。您还可以查看 developerWorks “Meet the experts” 区域(参见 参考资料),Dain Sundstrom 在这里回答关于 Geronimo 开发的技术问题。

紧张的 Apache Geronimo 开发计划意味着总有几个开发人员在线。常常可以在他们用来交谈的 IRC 频道上看到他们。要使用这种资源,您需要 IRC 客户端程序,还需要加入 #geronimo 频道。关于 IRC 的信息请参见 freenode 服务器(见 参考资料 中的链接)。

所有活跃的 Geronimo 开发人员都订阅 Geronimo 开发人员邮件列表(参见 参考资料)。这个邮件列表仅限于讨论与 Geronimo 服务器开发直接相关的内容。

在每年一次的 ApacheCon 会议上,您有机会与 Apache 开发人员直接见面(参见 参考资料 中一个 Web 页面的链接)。

什么是 Geronimo 里程碑版本?

在正式的 Geronimo 1.0 发布之前,Geronimo 服务器的发布通过里程碑版本进行。提供这些版本是为了让社区尽早接触服务器。对于开放源码项目,这是常见的做法。

在编写本文时,已经有了 Geronimo 的 Milestone 4。表 3 介绍了几种不同的 Geronimo 里程碑版本。



表 3. Geronimo 里程碑版本
里程碑版本 说明
M5 具有最新的特性集,最接近 1.0 版。集成了一个 Web 控制台。现在可以很容易地选择 Tomcat 和 Jetty 来处理 Web 层组件。
M4 第一个通过 OpenEJB 完全支持 EJB 的里程碑版本。
M3 主要的里程碑版本。所有 Web 层支持都已经到位了,ActiveMQ 已经可以工作了,Derby 作为内置的 RDBMS。EJB 支持还不完整。在 Web 层部署方面,优先采用 Jetty 而不是 Tomcat。
M1 和 M2 特性很有限的版本。

除了里程碑版本之外,还有其他二进制发行版吗?

有。在里程碑版本之间会增加许多特性,间隔的时间也比较长,Geronimo 团队常常提供最新的不稳定版本。

这些版本是未经测试的,不保证可靠。但是它们提供了最新的特性集,让无法从源代码进行构建的用户能够评估新的特性。

如何从源代码构建 Geronimo?

从源代码构建 Geronimo 并不容易,但是可以做到。这种工作以前是由大型软件公司在专门用于构建的服务器上进行的,现在在桌面计算机上也可以做了。

Geronimo 是一个大型项目,使用了一大套版本控制和构建工具。如果您坚持从源代码构建 Geronimo,那么就要准备好花时间来进行故障排除。如果您准备好了,请查看关于从源代码构建 Geronimo 的 wiki 页面以便了解最新的信息(参见 参考资料 中的链接)。

我希望为 Geronimo 项目做贡献。我怎么成为 Geronimo 开放源码项目的开发人员?

您不能直接登记。Geronimo 团队是一个精英团体,就像著名的 Apache Web 服务器团队一样。这意味着您必须先证明您对社区的价值。这需要通过长时间的努力(通常要好几个月),为项目做出突出的贡献。您必须从修复 bug 、提交补丁、与社区进行交流以及编写许多代码开始努力。有朝一日,您的能力得到了肯定,项目现有的提交者之一将发给您一封邀请信。然后,现有的开发人员团队(参见 参考资料 中的链接)将根据他们对您工作的印象进行投票,决定是否让您成为正式的提交者。如果您要寻找可干的工作,那么 Geronimo 的 to-do 列表是一个好起点(参见 参考资料 中这个列表的链接)。

在现代的开放源码活动中,能够在主要的 Apache 项目(比如 Geronimo)中获得提交者身份是非常光荣的,可以得到全球软件开发人员的认可和尊敬。

我是一位 IBM WebSphere® 用户。我对 Geronimo 很有兴趣。它与 IBM WebSphere Application Server 有哪些差异?

阅读教程“Apache Geronimo uncovered”(developerWorks,2005 年 8 月),参考资料 小节中有这个教程的链接。它的作者是 Adam Neat,他是一位专家级的 WebSphere 用户。