48.3. 打包和部署EJB模块

EJB-JAR文件是一个不包含装配信息的、由开发者提供的、包含一个或多个EJB组件的应用可装配单元文件,是一个一般的JAR文件。一般一个EJB-JAR文件代表一个EJB模块。当一个或多个EJB模块被装配到一个Java EE应用,并由装配者通过部署描述提供了装配信息和具体运行环境中资源信息之后,即可部署到应用服务器。金蝶Apusic应用服务器支持EJB-JAR的单独部署,这时,EJB-JAR中就要包含装配信息。

48.3.1. EJB-JAR文件结构

EJB-JAR文件中必须包含如下内容:

  • 组件类文件;

  • 组件接口类文件和组件Home接口的类文件;

  • 如组件是Entity Bean,则还必须包含主键类文件;

  • 组件依存的其他Java类文件;

  • 一个模块的部署描述文件,ejb-jar.xml文件;

  • 金蝶Apusic应用服务器相关装配信息的部署描述文件apusic-application.xml,EJB-JAR单独部署时需要提供;

EJB-JAR文件的结构如下图:

EJB-JAR文件结构

48.3.2. EJB模块的部署描述文件

部署描述文件ejb-jar.xml为EJB模块提供如下两方面的信息:

  • 结构信息

    ejb-jar.xml文件为模块中的EJB组件提供的结构信息并声明组件的外部依存关系,对于组件的开发者而言,结构信息是必须提供的,而且一般结构信息在结构信息在装配和部署时不能更改,以免破坏组件的功能。

  • 装配信息

    装配信息提供将组件装配到一起,形成一个更大的可装配单元的信息,装配信息对于组件提供者而言是可选的,并且在装配和部署时可以通过修改装配信息改变装配后的应用的行为。

ejb-jar.xml文件必须符合ejb-jar_2_1.xsd文档类型声明,并在文件中指定正确的xsd文件:

xmlns="http://java.sun.com/xml/ns/Java EE"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/Java EE
http://java.sun.com/xml/ns/Java EE/ejb-jar_3_0.xsd"
version="3.0"

EJB模块单独部署时还需要部署描述文件apusic-application.xml配置Apusic相关的信息,如EJB引用、资源引用、CMP2.0的域-数据库列映射、CMP2.0关系映射等。

48.3.3. EJB模块的两种形式

在金蝶Apusic应用服务器上,支持两种形式的EJB-JAR,一种是标准的JAR文件形式,另一种则可以是目录形式的EJB-JAR。通常,在组件开发阶段,采用目录形式的EJB-JAR,可以减少使用JAR工具打包的工作,并可方便的对模块进行修改。

而在实际的装配和部署阶段,往往采用易于管理的标准JAR文件格式。

当使用标准的JAR文件形式打包EJB-JAR模块时,只需按照前面描述的EJB-JAR的结构,使用jar工具打包即可。

48.3.4. 部署EJB模块

使用金蝶Apusic应用服务器提供的appctl工具部署EJB模块。金蝶Apusic应用服务器支持目录形式和打包形式的EJB模块,例如:

appctl install ejb_app_name MyEJB.jar

如果EJB模块是目录的形式则无须安装,仅在server.xml中登记一项。如果EJB模块是打包的形式则将应用自动解压缩到$APUSIC_HOME/domains/<DOMAIN_NAME>/deploy目录下的应用子目录件(其中<DOMAIN_NAME>为正在运行的Apusic领域名),如果该档案文件发生变化,在重启应用时将对EJB模块重新自动解包。在应用子目录中每个模块都建有一个临时文件夹,用于存放运行时生成的临时文件,此临时文件夹代替了原来的scratch目录。

48.3.5. 自动部署

将打包的EJB-WAR模块拷贝到$APUSIC_HOME/domains/<DOMAIN_NAME>/applications目录(其中<DOMAIN_NAME>为正在运行的Apusic领域名),EJB模块会被自动部署。