<翻译>1.4.2. Deploy EAR with EJB3 JAR

本文介绍了如何在JBoss AS应用服务器中部署Java EE应用程序,包括EAR文件的结构、部署描述符application.xml和jboss-app.xml的作用,以及如何配置类加载器隔离。

原文地址: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文件的路径。

 

20244月-2025年9月期间,研究团队在贵州习水国家级自然保护区制定39条样线,涵盖灌木林、常绿阔叶林、针叶林、常绿落叶阔叶混交林、针阔混交林等不同植被类型,每条样线分春夏秋冬4个季节采集样品,用真菌采集软件记录经纬度、海拔、采集地点、时间、生境等信息,使用佳能相机(R6 mark Ⅱ)对大型真菌进行拍照,并采集标本,标本存放于贵州省生物研究所大型真菌标本馆(HGAMF)。 通过形态学初步鉴定,结合分子生物学最终鉴定,参考已]报道的中国毒蘑菇名录开展毒蘑菇的认定。 调查到保护区内有毒真菌7目25科64种,导致中毒的主要类型有急性肾衰竭型、神经精神型和胃肠炎型。最终形成贵州习水国家级自然保护区大型有毒真菌图片数据集,它由以下2个部分组成。 (1)附件1包含78张原始照片(.JPG),照片名字包括了大型有毒真菌的拉丁名和中文名,若无中文名的直接用拉丁名。 (2)附件2是一个压缩文件,包含了2张工作表,其中一张表是大型有毒真菌39条样线的信息,另一张表是大型有毒真菌的中毒类型。 照片采用佳能相机R6 mark Ⅱ拍摄,物种鉴定通过多种文献核实,并经两位以上专家鉴定确认。该数据集可为研究地及周边的普通人识别有毒大型真菌提供参考,通过及时的图片对比,能有效避免误采误食大型有毒真菌,同时为因误食大型真菌可能引发的身体损伤进行了总结,能为患者及时治疗提供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值