科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

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

关键字: EJB 深入 Geronimo java

  • 评论
  • 分享微博
  • 分享邮件
geronimo-application.xml 文件包含 元素,它具有名为 configId 的属性。该元素对于 Maven 构建脚本的自动部署特性的正确运行是十分关键的。所设置的值可用于 maven.xml 文件中任何 的 id 属性中,如 清单 6 所示。

  清单 6. maven.xml 启动目标

<goal name="start">
 <deploy:distribute
   uri="deployer:geronimo:jmx:rmi://localhost/jndi/rmi:/JMXConnector"
   username="system"
   password="manager"
   home="${basedir}"
   module="target/${pom.artifactId}.ear"
 />
 <deploy:start
   uri="deployer:geronimo:jmx:rmi://localhost/jndi/rmi:/JMXConnector"
   username="system"
   password="manager"
   id="org/acme/PhoneBook"/>
 </goal>

  在 清单 6 中,因为 geronimo-application.xml 文件中的 configId 属性被设置为 org/acme/PhoneBook,所以它还必须是自动部署语句中 id 属性的值。Geronimo 团队为此设置了一个非常好的自动部署工具。但是,如果您经常自动部署,请确保检查您的临时目录,因为它们可能装满了旧的部署文件。

  资源目录中子目录列表中的下一个目录是 ejb 目录。openejb-jar.xml 部署描述符在 META-INF 子目录中。该文件对于数据库和实体 (CMP) bean 之间的所有连接是必不可少的。还必须对该文件进行小修改,以确保对于您的企业 bean 存在相应的 Java 命名和目录接口 (Java Naming and Directory Interface, JNDI) 名称。该文件如 清单 7 所示。

  清单 7. openejb-jar.xml

<?xml version="1.0"?>
<openejb-jar
    xmlns="http://www.openejb.org/xml/ns/openejb-jar"
    configId="org/acme/PhonebookEJB"
    parentId="MysqlDatabase">
    <cmp-connection-factory>
      <resource-link>MysqlDataSource</resource-link>
    </cmp-connection-factory>
    <enterprise-beans>
        <entity>
            <ejb-name>PhoneBookEntry</ejb-name>
            <local-jndi-name>
java:comp/env/ejb/PhoneBookEntryLocal
</local-jndi-name>
            <table-name>phone</table-name>
            <cmp-field-mapping>
                <cmp-field-name>name</cmp-field-name>
                <table-column>name</table-column>
            </cmp-field-mapping>
            <cmp-field-mapping>
                <cmp-field-name>phoneNumber</cmp-field-name>
                <table-column>phone</table-column>
            </cmp-field-mapping>
        </entity>

        <session>
            <ejb-name>PhoneBookSession</ejb-name>
            <local-jndi-name>
                  java:comp/env/ejb/PhoneBookSessionLocal
            </local-jndi-name>
        </session>
    </enterprise-beans>
</openejb-jar>

   清单 7 最重要的元素是 <cmp-connection-factory> 及其 <resource-link> 子元素。<resource-link> 元素内的名称必须与 JDBC 连接器配置的名称相匹配,如下列代码段所示:

...
<connectiondefinition-instance>
       <name>MysqlDataSource</name>
...

      openejb-jar.xml 中的 <local-jndi-name> 元素也是正常工作所必需的。如果收到找不到 JNDI 名称的错误消息,则可能错误设置了其中一个元素。

  在 清单 7 中还需注意实体 bean 的 元素,在此必须配置哪些数据库表和列映射到实体 bean 字段。参见 清单 7 中的 元素,其中有两个该配置的示例。

  最后一个目录是名为 merge 的 src/resources 目录。该目录的内容与 XDoclet 代码生成的执行方式直接相关。XDoclet 从 Javadoc 标记中提取信息,但它还将信息合并到 merge 目录内专门命名的文件中。这些合并文件包含 Web 应用程序层的一些配置信息。在项目的 src/resources/merge 目录中,taglibs.xml 文件允许定义应用程序中的所有标记库。当 XDoclet 生成 web.xml 和 struts-config.xml 时,有许多文件合并到其中。

  另一个部署计划存在于 src/webapp/WEB-INF/geronimo-jetty.xml 文件中,如 清单 8 所示。

  清单 8. geronimo-jetty.xml

<?xml version="1.0"?>
<web-app
      xmlns="http://geronimo.apache.org/xml/ns/web/jetty"
      xmlns:naming="http://geronimo.apache.org/xml/ns/naming"
      configId="org/acme/PhoneBookWeb"
      >

    <context-priority-classloader>true</context-priority-classloader>

</web-app>

  清单 8 所示的这个部署计划有一个重要的行。如果不将 元素设置为 true,则因为 Geronimo 库中可用类的冲突,Struts 应用程序将无法运行。将该值设置为 true 会告诉 Geronimo 在查找类时使用标准 Web 应用程序范围。这意味着,该应用程序隔离于服务器中运行的其他任何应用程序。但同时还意味着,该应用程序需要的任何类都必须与该应用程序绑定。

  应用程序依赖的所有 .jar 组件绑定在 project.xml 依赖关系部分中指定,并由 Maven 自动处理。

  最后一个配置文件是 project.properties,它驱动大多数构建处理,位于项目的根目录。该文件是一个仓库,存储 XDoclet 相关信息、有关在 .war 文件中包含哪些内容的信息,甚至还存储控制 Java 编译器输出格式的属性。

  将所有这些元素放在一起要花费大量时间,但希望您能够使用该示例应用程序作为您前行的垫脚石。

  结束语

  本文为更大的应用程序提供了非常基本的起始模板。为业务逻辑添加更多 CMP bean 和会话 bean,可以创建一个更有趣的 Web 应用程序。我已经展示了 Maven 构建系统的主要优点,即降低编译和生成最终 .ear 文件的嵌套文件结构的复杂性。XDoclet 代码生成系统还用于简化生成 EJB 工件、Struts 工件和 Web 应用程序工件的过程,这些工件是编译最终电话簿应用程序所必需的。使用该示例应用程序,您现在应该能够利用 Maven 和 XDoclet 来简化您的企业应用程序开发过程。

  Geronimo 开发人员已经按照 Sun J2EE 规范认真构建了服务器本身,并生产出一种将部署和配置问题与细节严格分离的产品,而这是用容器托管应用程序所必需的。

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

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

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