`
小峰子
  • 浏览: 105772 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

<翻译>1.4.2. Deploy EAR with EJB3 JAR

阅读更多

原文地址:http://docs.jboss.org/jbossas/docs/Server_Configuration_Guide/4/html/ch01s04s02.html

 

大多数JavaEE应用是发布成EAR归档文件的。一个EAR归档文件是一个JAR文件,其典型表现是包含了一个WAR归档文件(处理web页面,servlet以及web相关的组件)以及一个或多个提供EJB3服务(如数据访问与事务)的JAR文件,和另外一些支持应用正常运行的JAR文件。另外一个EAR文件也拥有部署描述文件例如applocation.xml和jboss-app.xml。下面是一个典型EAR应用的基础结构

 

myapp.ear
|+ META-INF
   |+ applications.xml and jboss-app.xml
|+ myapp.war
   |+ web pages and JSP /JSF pages
   |+ WEB-INF
      |+ web.xml, jboss-web.xml, faces-config.xml etc.
      |+ lib
         |+ tag library JARs
      |+ classes
         |+ servlets and other classes used by web pages
|+ myapp.jar
   |+ EJB3 bean classes
   |+ META-INF
      |+ ejb-jar.xml and persistence.xml
|+ lib
   |+ Library JARs for the EAR

 

需要注意一点的是,不像许多其它的应用服务器,在JBossAS应用服务器中,你不需要为了让WAR文件能访问EJB3服务而在web.xml文件中声明EJB引用。你可以直接通过JNDI来获得引用。

 

下面是一个典型的application.xml文件。它声明了在EAR中的WAR与EJB3的JAR文件,以及为应用定义了web内容的根目录。当然,你可以在同一个EAR应用存放多个EJB3模块。在这个EAR应用中,application.xml文件也可以为这些jar文件选择性地定义一个共用的类路径。在JBossAS中,这个JAR文件路径默认为"lib",但这个路径在其它应用服务器中可能会不同

 

 

<application>
  <display-name>My Application</display-name>

  <module>
    <web>
      <web-uri>myapp.war</web-uri>
      <context-root>/myapp</context-root>
    </web>
  </module>

  <module>
    <ejb>myapp.jar</ejb>
  </module>
  
  <library-directory>lib</library-directory>

</application>
 

而jboss-app.xml文件则为EAR应用提供了特属于JBoss的部署配置方法。例如,它可以在EAR中指定模块的部署顺序、部署特属于JBoss的应用模块如SAR文档(Service ARchive for MBeans)和HAR文档(Hibernate ARchive for Hibernate objects)、提供可用于该应用的安全域和JMX MBean等等。你可以参考以下DTD来获取jboss-app.xml的更多属性:

http://www.jboss.org/j2ee/dtd/jboss-app_4_2.dtd.

 

一个jboss-app.xml的公用例子是配置关于该EAR文件是否要部署在它特有范围的类加载器中,用以防止和其它应用的命名冲突。如果你的EAR应用是部署在自己拥有的类加载器并且在其EJB3的JAR文件中只有一个persistence-unit,那你就可以使用@PersistenceContext EntityManager来注入EntityManager到session beans,而无需考虑得传递persistence unit的名称给@PersistenceContext注释。下面的jboss-app.xml为EAR应用标识了一个一定范围的类加载器 myapp:archive=myapp.ear 


<jboss-app>
      <loader-repository>
      myapp:archive=myapp.ear
      </loader-repository>
</jboss-app>
  

EAR部署由JBOSS_DIST/server/default/deploy/ear-deploy.xml文件来配置,此文件包含以下三个属性

 

<server>
   <mbean code="org.jboss.deployment.EARDeployer"
          name="jboss.j2ee:service=EARDeployer">
      <!-- 
          A flag indicating if ear deployments should 
           have their own scoped class loader to isolate 
           their classes from other deployments.
      -->
      <attribute name="Isolated">false</attribute>
      
      <!-- 
          A flag indicating if the ear components should 
          have in VM call optimization disabled.
      -->
      <attribute name="CallByValue">false</attribute>
      
      <!-- 
          A flag the enables the default behavior of 
          the ee5 library-directory. If true, the lib 
          contents of an ear are assumed to be the default 
          value for library-directory in the absence of 
          an explicit library-directory. If false, there 
          must be an explicit library-directory.
      -->
      <attribute name="EnablelibDirectoryByDefault">true</attribute>
   </mbean>
</server>

 

如果你设置了Isolated为true,所有的EAR部署默认都会拥有范围内的类加载器。因此不需要去定义jboss-app.xml文件中的classloader了。CallByValue 指明我们是否要把所有EJB调用都当成远程调用。远程调用比本地 call-by-reference调用要花费另外的花销,因为参与远程调用的对象需要序列化和反序列化。对于我们大多数的应用来说,WAR与EJB3的JAR是部署在同一个服务器上的,因此该值因该默认为false,并让服务器在同一个JVM中使用本地 call-by-reference调用来援用EJB方法。 EnablelibDirectoryByDefault属性指明在EAR归档文件中的lib目录是否要成为共享JAR文件的路径。

 

分享到:
评论

相关推荐

    java应用软件程序设计

    ReadTestquestion&lt;br&gt;7.5. 课程设计作业&lt;br&gt;第8章 日历记事本&lt;br&gt;8.1. 设计内容&lt;br&gt;8.2. 设计要求&lt;br&gt;8.3. 总体设计&lt;br&gt;8.4. 具体设计&lt;br&gt;8.4.1. 运行效果与程序发布&lt;br&gt;8.4.2. 主类CalendarPad&lt;br&gt;8.4.3. 记事本...

    Java课程设计(代码+清单)

    ReadTestquestion&lt;br&gt;7.5. 课程设计作业&lt;br&gt;第8章 日历记事本&lt;br&gt;8.1. 设计内容&lt;br&gt;8.2. 设计要求&lt;br&gt;8.3. 总体设计&lt;br&gt;8.4. 具体设计&lt;br&gt;8.4.1. 运行效果与程序发布&lt;br&gt;8.4.2. 主类CalendarPad&lt;br&gt;8.4.3. 记事本...

    mysql5.1中文手册

    MySQL的历史&lt;br&gt;1.4.2. MySQL的的主要特性&lt;br&gt;1.4.3. MySQL稳定性&lt;br&gt;1.4.4. MySQL表最大能达到多少&lt;br&gt;1.4.5. 2000年兼容性&lt;br&gt;1.5. MaxDB数据库管理系统概述&lt;br&gt;1.5.1. 什么是MaxDB?&lt;br&gt;1.5.2. MaxDB的历史&lt;br&gt;...

    XML实用大全

    365&lt;br&gt;12.11.3 background-repeat属性... 367&lt;br&gt;12.11.4 background-attachment属性... 368&lt;br&gt;12.11.5 background-position属性... 369&lt;br&gt;12.12 文本属性... 373&lt;br&gt;12.12.1 word-spacing属性... 373&lt;br&gt;12.12....

    网络常见问题与故障1000例

    可能该书会有很多人用得上,而本下载频道里已有的下载地址有误且文件不可用,故而再次上传,以供有需要者下载!... 同一台计算机在家里无法正常使用&lt;br&gt;1.4.2 设备设置&lt;br&gt;112. 主机到本地路由器的以太口不通 &lt;br&gt;

    LINUX与UNIX SHELL编程指南

    sed 用法介绍 89&lt;br&gt;10.1 sed怎样读取数据 89&lt;br&gt;10.2 调用sed 89&lt;br&gt;10.2.1 保存sed输出 90&lt;br&gt;10.2.2 使用sed在文件中查询文本的方式 90&lt;br&gt;10.2.3 基本sed编辑命令 90&lt;br&gt;10.3 sed和正则表达式 91&lt;br&gt;10.4 基本...

    网络常见问题与故障1000例(中)

    &lt;br&gt;&lt;br&gt;目录 &lt;br&gt;第1章 网络连接常见问题与故障&lt;br&gt;1.1 网络搭建(网络拓扑、网络连接)&lt;br&gt;1.1.1 网络规划&lt;br&gt;1. 物理隔离要建两个网络&lt;br&gt;2. 划分子网隔离子网&lt;br&gt;3. IP与MAC绑定难题&lt;br&gt;4. 实现多VLAN的Internet...

    网络常见问题与故障1000例(下)

    &lt;br&gt;&lt;br&gt;目录 &lt;br&gt;第1章 网络连接常见问题与故障&lt;br&gt;1.1 网络搭建(网络拓扑、网络连接)&lt;br&gt;1.1.1 网络规划&lt;br&gt;1. 物理隔离要建两个网络&lt;br&gt;2. 划分子网隔离子网&lt;br&gt;3. IP与MAC绑定难题&lt;br&gt;4. 实现多VLAN的Internet...

    asp.net技术内幕(3)

    &lt;br&gt;21.2.2 申请服务器证书 &lt;br&gt;21.2.3 安装服务器证书 &lt;br&gt;21.3 在ASP.NET页面中使用SSL &lt;br&gt;21.4 使用.NET加密类 &lt;br&gt;21.4.1 使用散列算法 &lt;br&gt;21.4.2 使用对称加密算法 &lt;br&gt;21.4.3 使用不对称加密 &lt;br&gt;21.5 小结 ...

    win2000驱动程序设计指南

    数据传输 64&lt;br&gt;4.1 中断处理 64&lt;br&gt;4.2 DPC处理程序 66&lt;br&gt;4.3 带外(OOB)数据包 66&lt;br&gt;4.3.1 等待发送的OOB数据 67&lt;br&gt;4.3.2 接收的OOB数据 68&lt;br&gt;4.4 发送包 69&lt;br&gt;4.4.1 无连接微端口的多包传送 70&lt;br&gt;4.4.1.1 ...

    asp.net技术内幕(1)

    &lt;br&gt;21.2.2 申请服务器证书 &lt;br&gt;21.2.3 安装服务器证书 &lt;br&gt;21.3 在ASP.NET页面中使用SSL &lt;br&gt;21.4 使用.NET加密类 &lt;br&gt;21.4.1 使用散列算法 &lt;br&gt;21.4.2 使用对称加密算法 &lt;br&gt;21.4.3 使用不对称加密 &lt;br&gt;21.5 小结 ...

    asp.net技术内幕(2)

    &lt;br&gt;21.2.2 申请服务器证书 &lt;br&gt;21.2.3 安装服务器证书 &lt;br&gt;21.3 在ASP.NET页面中使用SSL &lt;br&gt;21.4 使用.NET加密类 &lt;br&gt;21.4.1 使用散列算法 &lt;br&gt;21.4.2 使用对称加密算法 &lt;br&gt;21.4.3 使用不对称加密 &lt;br&gt;21.5 小结 ...

    asp.net技术内幕(5)

    &lt;br&gt;21.2.2 申请服务器证书 &lt;br&gt;21.2.3 安装服务器证书 &lt;br&gt;21.3 在ASP.NET页面中使用SSL &lt;br&gt;21.4 使用.NET加密类 &lt;br&gt;21.4.1 使用散列算法 &lt;br&gt;21.4.2 使用对称加密算法 &lt;br&gt;21.4.3 使用不对称加密 &lt;br&gt;21.5 小结 ...

    asp.net技术内幕(4)

    &lt;br&gt;21.2.2 申请服务器证书 &lt;br&gt;21.2.3 安装服务器证书 &lt;br&gt;21.3 在ASP.NET页面中使用SSL &lt;br&gt;21.4 使用.NET加密类 &lt;br&gt;21.4.1 使用散列算法 &lt;br&gt;21.4.2 使用对称加密算法 &lt;br&gt;21.4.3 使用不对称加密 &lt;br&gt;21.5 小结 ...

    jquery-1.4.2.js和jquery.min-1.4.2.js

    jquery-1.4.2.js和jquery.min-1.4.2.js

    MYSQL培训经典教程(共两部分) 2/2

    MYSQL高级特性 81&lt;br&gt;4.1 集合函数 82&lt;br&gt;4.1.1 行列计数 82&lt;br&gt;4.1.2统计字段值的数目 82&lt;br&gt;4.1.3 计算字段的平均值 83&lt;br&gt;4.1.4 计算字段值的和 84&lt;br&gt;4.1.5 计算字段值的极值 84&lt;br&gt;4.1.6 总结 86&lt;br&gt;4.2 操作...

    MYSQL培训经典教程(共两部分) 1/2

    MYSQL高级特性 81&lt;br&gt;4.1 集合函数 82&lt;br&gt;4.1.1 行列计数 82&lt;br&gt;4.1.2统计字段值的数目 82&lt;br&gt;4.1.3 计算字段的平均值 83&lt;br&gt;4.1.4 计算字段值的和 84&lt;br&gt;4.1.5 计算字段值的极值 84&lt;br&gt;4.1.6 总结 86&lt;br&gt;4.2 操作...

    Linux环境数据库管理员指南

    目 录&lt;br&gt;译者序&lt;br&gt;前言&lt;br&gt;第1章 Linux操作系统 1&lt;br&gt;1.1 Linux的简要历史介绍 1&lt;br&gt;1.2 Linux核心 2&lt;br&gt;1.2.1 Linux的开发特点 2&lt;br&gt;1.2.2 Linux分发包 3&lt;br&gt;1.2.3 为什么要为商业Linux&lt;br&gt; 版本付费 3&lt;br&gt;1.3 ...

    nacos-server-1.4.2.zip

    nacos-server-1.4.2.zip

    LINUX与UNIX_SHELL编程指南1

    sed 用法介绍 89&lt;br&gt;10.1 sed怎样读取数据 89&lt;br&gt;10.2 调用sed 89&lt;br&gt;10.2.1 保存sed输出 90&lt;br&gt;10.2.2 使用sed在文件中查询文本的方式 90&lt;br&gt;10.2.3 基本sed编辑命令 90&lt;br&gt;10.3 sed和正则表达式 91&lt;br&gt;10.4 基本...

Global site tag (gtag.js) - Google Analytics