科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道利用 Geronimo 深入 EJB Web 应用程序1

利用 Geronimo 深入 EJB Web 应用程序1

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  在本文中,您将学习如何扩展初始数据库应用程序,并为之提供一个使用 EJB后端构建的功能用户接口。您还将学习如何使用 Apache Maven 构建系统来构建、打包和部署电话簿数据库应用程序。通过本文学习如何简化您的企业 Web 应用程序开发过程。

作者:Neal Sanche 来源:IT专家网 2008年5月13日

关键字: EJB 深入 Geronimo java

  • 评论
  • 分享微博
  • 分享邮件
 深入了解功能强大的 Geronimo 应用服务器的内部工作,学习如何使用它来开发数据库应用程序。Java 开发人员 Neal Sanche 在本文中指导您创建简单的电话簿数据库应用程序。在本文中,您将学习如何扩展初始数据库应用程序,并为之提供一个使用 Apache Struts 和 Enterprise JavaBeans (EJB) 后端构建的功能用户接口。您还将学习如何使用 Apache Maven 构建系统来构建、打包和部署电话簿数据库应用程序。通过本文学习如何简化您的企业 Web 应用程序开发过程。

  在学习示例应用程序之前,首先要详细了解一下将用于创建和部署该应用程序的三种技术。

  Maven 是用于构建 Java 应用程序的应用程序,它从源代码一直构建到打包至 Web 站点。Geronimo 应用服务器是使用 Maven 应用程序的构建系统构建的。在它的核心内,Maven 的可扩展框架允许创建模块以执行构建软件组件时需要的一些动作。谈到 Apache Ant(Java 构建工具),Maven 的动作已经与使用 UNIX 命令 make 生成的结果进行了比较。Maven 脚本还允许将应用程序自动部署到正在运行的 Geronimo 服务器中。本文展示了如何使用 Maven 来将源代码打包到完整的 Java 2 Platform, Enterprise Edition (J2EE) 企业应用程序中。

  Struts 是基于 Model 2 架构的 Web 应用程序框架。该混合架构最大程度地将业务逻辑和显示逻辑隔离。Struts 通过将业务逻辑隔离到纯 Java 类中来实现这一目标,纯 Java 类操作数据,并提供了丰富的标记库,该库可用于在编写 JavaServer Pages (JSP) 时显示数据。(在无数可用的 Web 开发框架中,许多框架都有很高的人气,比如 Tapestry 和 JavaServer Faces,而 Struts 一直是我偏爱的一个。)

  XDoclet 起源于存在已久的 Java 文档工具 Javadoc。XDoclet 开发人员最初以一种新颖的方法使用 Javadoc,即使用专门的注释来生成可以被编译成源代码的模型。他们从 Javadoc 的实际使用抽身而出,生产出他们自己的变种,叫做 Xjavadoc。但是在 XDoclet 早期,仍然需要在源代码的 Javadoc 注释中使用标记来自动生产自动生成的代码。编写 J2EE 应用程序中的源代码和部署描述符文件可能十分冗长乏味。对于每一百行左右的 Java 代码,预计可以生成至少三倍多的支持 J2EE 描述符代码来完成工作。为了大大减少开发多层企业应用程序的痛苦,XDoclet 伸出援手,提供了代码标记和代码生成以使大部分部署描述符自动生成。这样就隐藏了 J2EE 的大量复杂性,但您要清楚代码生成器在构建什么,因为当事情没有如期进行时,您必须检查它。

  部署计划

  正如在简介中提到的,Maven 被 Geronimo 团队用来构建整个应用服务器。您可以利用 Maven 构建工具的强大功能来编译应用程序源代码,执行代码生成(需要 XDoclet 的帮助),绑定企业应用程序模块,并最终将其部署到正在运行的 Geronimo 服务器中。

  该过程以三个文件开始。第一个文件 project.xml 定义什么是所谓的项目对象模型(Project Object Model,POM)。它列出应用程序的相关信息,包括应用程序名称、编写者、版本号、对构建应用程序非常重要的依赖关系,以及对如何构建应用程序的概述。出于本文目的,我们将主要研究 POM 的依赖关系部分。

      上的指定资源库中下载构建应用程序所需的工件。iBiblio就是这样一个资源库,它包含数百个开放源代码 Java 库和支持文件,以及这些库的 POM 信息。它收集了大量信息,目的只有一个,即简化应用程序构建过程中 Java 开发人员的生活。电话簿应用程序 project.xml 文件的依赖关系部分由 23 个依赖关系组成,其中一半是 .jar 文件,用于支持 Struts 和 DisplayTag 标记库。其余的依赖关系主要是 XDoclet 要求。不使用 Maven,每个依赖关系都需要与示例应用程序绑定在一起。

  Maven 只在第一次编译应用程序时下载所有依赖的工件。以后的编译运行利用 Maven 的本地资源库(已下载工件的本地高速缓存,通常位于 $HOME 目录的 .maven 目录下)来获得工件。

  安装 Maven 1.0.2

  我们的示例应用程序需要对 Maven 进行一些初始设置以使一切正确工作。首先,需要安装 Maven 1.0.2(参阅 参考资料 中的 Maven Web 站点链接)。安装完成后,在命令行输入 maven,将看到类似如下的信息:

E:\Documents and Settings\Neal\My Documents\eclipse\workspace\Phonebook> maven
 __  __
|  \/  |__ _Apache__ ___
| |\/| / _` \ V / -_) ' \  ~ intelligent projects ~
|_|  |_\__,_|\_/\___|_||_|  v. 1.0.2

编译 Geronimo

  然后,按照 Wiki上的指令从源代码编译 Geronimo。成功构建之后,Geronimo 工件将位于本地资源库。它们是构建示例应用程序所必需的。编译完 Geronimo 之后,查找 geronimo-deployment-plugin-1.0-SNAPSHOT.jar 文件,并将其安装到 $MAVEN_HOME/plugins 目录中,否则可能会看到如下消息:

Tag library requested that is not present: 'geronimo:deploy' in plugin: 'null'

  安装 XDoclet 1.2.3

  最后,需要将 XDoclet 1.2.3 安装到 Maven 资源库中。如果试图构建示例应用程序,会显示一条 Maven 消息,指明它无法找到一些其他的 XDoclet 1.2.3 工件,这时您可能需要下载 XDoclet 1.2.3(lib 包),并将 .jar 文件解压到位于 .maven/repository/xdoclet/jars 的本地 Maven 资源库中。如果您是 Windows 用户,应该在 C:\Documents and Settings\username 目录下查找该 Maven 目录。如果您是 UNIX 用户,应该在主目录下查找该目录。还应该通过将 maven-xdoclet-plugin-1.2.3.jar 添加到 $MAVEN_HOME/plugins 目录来安装 XDoclet Maven 插件。

  成功构建

  具备这些先决条件之后,构建过程应该能够顺利进行。当然,可以在进行上述工作之前尝试构建,查看 Maven 找不到哪些文件,然后只安装这些文件。可以尝试在示例应用程序的顶层目录中运行 Maven。首先,许多工件将被下载,最后,您将看到 BUILD SUCCESSFUL 消息。

  要更多了解 Maven 做什么,研究一下 maven.xml 和 project.properties 文件。Maven 是面向目标的。它读取 maven.xml 并尝试满足顶层项目元素的默认属性中指定的所有目标。在本例中,它尝试满足部署目标指明为先决条件的所有事项;也就是说,它将尝试构建 .ear 文件,然后尝试停止和启动应用程序。应用程序的部署是通过上述的 Geronimo Deployment Maven 插件执行的。当然,Geronimo 服务器应该运行 —— 否则构建将失败,并显示如下消息:

Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException
[Root exception is java.rmi.ConnectException: Connection refused to
host: 10.0.0.7; nested exception is:
        java.net.ConnectException: Connection refused: connect]

  如果收到该消息,使用如下命令启动 Geronimo 服务器:

E:\geronimo-snapshot>java -jar bin\server.jar org/apache/geronimo/
DebugConsole org/apache/geronimo/RuntimeDeployer

  该命令告诉 Geronimo 启动其服务器、DebugConsole 应用程序配置和 RuntimeDeployer 配置。

  调试控制台

  DebugConsole(参见 图 1)是可选组件,允许通过一个小 Web 应用程序(参阅 http://localhost:8080/debug-tool)查看 Geronimo 服务器中在运行什么。

  图 1. Geronimo DebugConsole

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章