独立的Web应用、EJB模块和完整的JavaEE应用都需要部署描述文件apusic-application.xml来配置Apusic相关的属性。apusic-application_5_0.dtd文件定义了apusic-application.xml的结构,确定了它能够包含的元素、子元素和元素的属性。定义在DTD中的元素能够包含:
子元素
数据
属性
元素能够包含子元素,例如下面的代码片断定义了apusic-application元素:
<!ELEMENT apusic-application (module*, mail-session*, security-role*)>
可以看出,元素apusic-application能够包含子元素moduls、mail-session和security-role。通过可选的后缀修饰子元素来决定能够包含子元素的数量。具体含义见下表:
子元素后缀 | 含义 |
element* | 能够包含零或多个这种子元素 |
element? | 能够包含零或一个这种子元素 |
element+ | 必须包含一个或多个这种子元素 |
element | 只能包含一个这种子元素 |
一些元素没有子元素而是包含字符数据。例如:
<!ELEMENT role-name (#PCDATA)>
在apusic-application.xml中就应该表现下面的形式。注意,字符数据前后都不要有空格:
<role-name>admin</role-name>
元素还能够带有属性,使用ATTLIST标记声明。声明的语法为:
<!ATTLIST element-name attribute-name attribute-type default-value>
例如,在apusic-application_4_0.dtd中为module元素定义了名称为uri的属性:
<!ATTLIST module uri CDATA #IMPLIED>
属性的类型(attribute-type)可以为下表中所列的值:
值 | 说明 |
CDATA | 字符数据 |
(en1|en2|..) | 必须为枚举列表中的一个值 |
ID | 唯一的ID |
IDREF | 另外一个元素的ID |
IDREFS | 其他元素ID列表 |
NMTOKEN | 一个有效的XML名称 |
NMTOKENS | 有效的XML名称列表 |
ENTITY | 实体 |
ENTITIES | 实体列表 |
NOTATION | 符合的名称 |
xml: | 预先定义的XML值 |
属性的缺省值(default-value)可以为:
值 | 说明 |
value | value为属性的缺省值 |
#REQUIRED | 元素必须包含这个属性值 |
#IMPLIED | 元素可以不包含这个属性值 |
#FIXED value | 属性值是固定值 |
这一节将介绍apusic-application.xml中包含的元素。
apusic-application为根元素,包含下列子元素:
apusic-application元素
元素 | 包含数量 | 描述 |
module | 零个或多个 | 代表单个Java EE模块,如Web、EJB模块 |
mail-session | 零个或多个 | |
security-role | 零个或多个 | 安全角色映射 |
module元素代表单个Java EE模块,包含下列子元素之一:
module元素
module的子元素为枚举类型,因此它只包含四个子元素中的一个元素。
元素 | 包含数量 | 描述 |
connector | 其中一个 | 暂不支持 |
ejb | 其中一个 | 代表EJB模块 |
java | 其中一个 | 代表应用客户端模块 |
web | 其中一个 | 代表web应用模块 |
module元素还包含一个属性uri:
名称 | 类型 | 缺省值 | 描述 |
uri | 字符 | #IMPLIED | 模块的URI,相对于应用的最顶层目录 |
ejb元素代表EJB模块,包含下列子元素:
ejb元素
元素 | 包含数量 | 描述 |
entity | session | message-driven | 一个或多个 | EJB的类型 |
relationship-mapping | 一个或多个 | CMP2.0关系映射 |
cmp-resource | 零个或一个 | CMP数据源JNDI名称 |
entity元素代表entity bean,包含下列子元素:
entity元素
元素 | 包含数量 | 描述 |
jndi-name | 零个或一个 | 指定jndi名称 |
local-jndi-name | 零个或一个 | 指定本地jndi名称 |
cmp | 零个或一个 | 配置Apusic相关的CMP属性 |
is-modified-method-name | 零个或一个 | 指定is-modified方法,容器根据此方法返回的布尔值来决定是否调用ejbStore方法将信息存储到数据库。is-modified方法在BMP和CMP1.x的实体Bean中使用。CMP2.x的实体Bean采用另外的方式实现,无需设置is-modified方法。 |
ejb-ref | 零个或多个 | 映射ejb-jar.xml中相应的EJB引用到JNDI名称 |
ejb-local-ref | 零个或多个 | 映射ejb-jar.xml中相应的本地EJB引用到JNDI名称 |
resource-ref | 零个或多个 | 映射ejb-jar.xml中相应的资源引用到JNDI名称 |
resource-env-ref | 零个或多个 | 映射ejb-jar.xml中相应的资源环境引用到JNDI名称 |
entity元素还包含下列属性:
名称 | 类型 | 缺省值 | 描述 |
ejb-name | 字符 | #REQUIRED | 匹配ejb-jar.xml中相应的ejb-name |
pool-size | 字符 | #IMPLIED | 实例池容量,组件实例池的大小,单位为实例的个数 |
cache-size | 字符 | #IMPLIED | 缓冲池容量,可保存在EJB缓存中的EJB实例数 |
transaction-timeout | 字符 | #IMPLIED | 事务的超时时间值,单位为秒 |
concurrency-strategy | 字符 | #IMPLIED | 并发策略,可以为“Exclusive”,“Parallel”,“ReadOnly”。
|
force-refresh | True|False | False | 强制刷新,当concurrency-strategy被设置为“Exclusive”时有效,保证容器在每次事务开始时强制同步实例状态与持久存储中的状态数据。默认值为“False”。 |
delay-updates | True|False | True | 已不使用 |
load-for-update | True|False | False | 在SELECT语句中增加了一个FOR UPDATE子句,在读入数据时锁定数据行。 |
cmp11-promotion | 字符 | #IMPLIED | CMP1.1自动提升,对EJB1.1版本的容器管理持久性Entity Bean有效,在运行时是否需要将其自动升级为EJB2.1版本的容器管 理持久性Entity Bean运行。默认值为“True”。 |
expiration-time | 字符 | #IMPLIED | 缓冲过期时间,实例保持在就绪状态的最大空闲时间。单位是秒。 |
jdbc元素包含下列子元素:
jdbc元素
名称 | 包含数量 | 描述 |
datasource-name | 零或一个 | 数据源JNDI名称,已不使用 |
table-name | 零或一个 | CMP映射的数据库表名 |
auto-create-table | 零或一个 | 自动产生表,在数据库表不存在的情况下使用 |
auto-generate-key | 零或一个 | 自动产生主键 |
field-mapping | 零或多个 | CMP域-数据库表列映射 |
load-unit | 零或多个 | 装载单元,Apusic中对于容器管理持久性的Entity Bean,开发者可以通过将状态划分为不同的装载单元,实现Lazy Loading的特性 |
finder | 零或多个 | 为CMP1.x find方法设置SQL子句 |
field-mapping元素代表CMP域-数据库表列映射,包含下列子元素:
field-mapping元素
名称 | 包含数量 | 描述 |
field-name | 一个 | CMP域名称,必须匹配ejb-jar.xml中相应的cmp-field子元素field-name |
column-name | 一个 | 数据库表列名称 |
load-unit元素代表装载单元,包含下列子元素:
load-unit元素
名称 | 包含数量 | 描述 |
unit-name | 一个 | 装载单元名称 |
cmp-field | cmr-field | 一个或多个 | CMP域和CMR域 |
finder元素代表CMP1.x find方法,包含下列子元素:
finder元素
名称 | 包含数量 | 描述 |
description | 零或一个 | 为父元素提供文本描述信息 |
method | 一个 | 代表EJB home接口或组件接口中定义的方法 |
sql-clause | 一个 | CMP1.1查询语句 |
method元素代表EJB home接口或组件接口中定义的方法,包含下列子元素:
method元素
名称 | 包含数量 | 描述 |
description | 零或一个 | 为父元素提供文本描述信息 |
method-intf | 零或一个 | 用于区分home接口和组件接口中具有相同方法名和方法签名的方法。 |
method-name | 一个 | 查询方法的名称 |
method-params | 零或一个 | 方法参数列表 |
method-intf元素用于区分home接口和组件接口中具有相同方法名和方法签名的方法,不包含子元素。method-intf元素必须为下面列表之一:
<method-intf>Home</method-intf>
<method-intf>Remote</method-intf>
<method-intf>LocalHome</method-intf>
<method-intf>Local</method-intf>
method-params元素代表方法的参数列表,包含下列子元素:
method-params元素
名称 | 包含数量 | 描述 |
method-param | 零或多个 | 方法参数的Java类型全名 |
is-modified-method-name元素用来指定is-modified方法,容器根据此方法返回的布尔值来决定是否调用ejbStore方法将信息存储到数据库。is-modified方法在BMP和CMP1.x的实体Bean中使用。CMP2.x的实体Bean采用另外的方式实现,无需设置is-modified方法。
ejb-ref元素用来映射ejb-jar.xml中相应的EJB引用到JNDI名称,包含下列子元素:
ejb-ref元素
名称 | 包含数量 | 描述 |
ejb-ref-name | 一个 | 必须匹配ejb-jar.xml中相应的ejb-ref-name元素 |
jndi-name | 一个 | 指定JNDI名称 |
ejb-local-ref元素用来映射ejb-jar.xml中相应的本地EJB引用到JNDI名称,包含下列子元素:
ejb-local-ref元素
名称 | 包含数量 | 描述 |
ejb-ref-name | 一个 | 必须匹配ejb-jar.xml中相应的ejb-ref-name元素 |
jndi-name | 一个 | 指定JNDI名称 |
resource-ref元素用来映射ejb-jar.xml中相应的资源引用到JNDI名称,包含下列子元素:
resource-ref元素
名称 | 包含数量 | 描述 |
res-ref-name | 一个 | 必须匹配ejb-jar.xml中相应的resource-ref的子元素res-ref-name。 |
jndi-name | 一个 | 指定JNDI名称 |
resource-env-ref元素用来映射ejb-jar.xml中相应的资源环境引用到JNDI名称,包含下列子元素:
resource-env-ref元素
名称 | 包含数量 | 描述 |
resource-env-ref-name | 一个 | 必须匹配ejb-jar.xml中相应的resource-env-ref的子元素resource-env-ref-name。 |
jndi-name | 一个 | 指定JNDI名称 |
resource-env-ref-name元素必须匹配ejb-jar.xml中相应的resource-env-ref的子元素resource-env-ref-name。该元素不包含子元素。
session元素代表session bean,包含下列子元素:
session元素
元素 | 包含数量 | 描述 |
jndi-name | 零个或一个 | 指定jndi名称 |
local-jndi-name | 零个或一个 | 指定本地jndi名称 |
ejb-ref | 零个或多个 | 映射ejb-jar.xml中相应的EJB引用到JNDI名称 |
ejb-local-ref | 零个或多个 | 映射ejb-jar.xml中相应的本地EJB引用到JNDI名称 |
resource-ref | 零个或多个 | 映射ejb-jar.xml中相应的资源引用到JNDI名称 |
resource-env-ref | 零个或多个 | 映射ejb-jar.xml中相应的资源环境引用到JNDI名称 |
session元素还包含下列属性:
名称 | 类型 | 缺省值 | 描述 |
ejb-name | 字符 | #REQUIRED | 匹配ejb-jar.xml中相应的ejb-name |
pool-size | 字符 | #IMPLIED | 实例池容量,组件实例池的大小,单位为实例的个数 |
cache-size | 字符 | #IMPLIED | 缓冲池容量,可保存在EJB缓存中的EJB实例数 |
session-timeout | 字符 | #IMPLIED | Session Bean组件实例的超时时间 |
transaction-timeout | 字符 | #IMPLIED | 事务的超时时间值,单位为秒 |
message-driven元素代表message-driven bean,包含下列子元素:
message-driven元素
元素 | 包含数量 | 描述 |
message-driven-destination | 一个 | 配置Apusic相关的message-driven bean目的地 |
ejb-ref | 零个或多个 | 映射ejb-jar.xml中相应的EJB引用到JNDI名称 |
ejb-local-ref | 零个或多个 | 映射ejb-jar.xml中相应的本地EJB引用到JNDI名称 |
resource-ref | 零个或多个 | 映射ejb-jar.xml中相应的资源引用到JNDI名称 |
resource-env-ref | 零个或多个 | 映射ejb-jar.xml中相应的资源环境引用到JNDI名称 |
message-driven元素还包含下列属性:
名称 | 类型 | 缺省值 | 描述 |
ejb-name | 字符 | #REQUIRED | 匹配ejb-jar.xml中相应的ejb-name |
pool-size | 字符 | #IMPLIED | 实例池容量,组件实例池的大小,单位为实例的个数 |
message-driven-destination元素用来配置Apusic相关的message-driven bean目的地,包含下列子元素:
message-driven-destination元素
名称 | 包含数量 | 描述 |
connection-factory-name | 零或一个 | 连接工厂的JNDI名字 |
destination-name | 一个 | JMS消息目的地JNDI名字 |
auto-create-destination | 零或一个 | 自动创建目的地 |
client-id | 零或一个 | 客户端标识 |
durable-subscription-name | 零或一个 | 持久订阅名称 |
relationship-mapping元素代表Apusic相关的CMP2.0关系映射配置,包含下列子元素:
relationship-mapping元素
名称 | 包含数量 | 描述 |
ejb-relation-name | 一个 | 必须匹配ejb-jar.xml中ejb-relation的子元素ejb-relation-name |
table-name | 零或一个 | 辅助表名。单向一对多、单向多对多和双向多对多需要辅助表 |
auto-create-table | 零或一个 | 自动创建辅助表 |
source-role | 零或一个 | CMP2.0关系中的一个角色 |
sink-role | 零或一个 | CMP2.0关系中的另一个角色 |
ejb-relation-name元素必须匹配ejb-jar.xml中ejb-relation的子元素ejb-relation-name。该元素不包含子元素。
source-role元素代表CMP2.0关系中的一个角色,包含下列子元素:
source-role元素
名称 | 包含数量 | 描述 |
field-mapping | 零或多个 | CMP域-外键映射 |
sink-role元素代表CMP2.0关系中的一个角色,包含下列子元素:
sink-role元素
名称 | 包含数量 | 描述 |
field-mapping | 零或多个 | CMP域-外键映射 |
cmp-resource元素代表CMP数据源JNDI名称,包含下列子元素:
cmp-resource元素
名称 | 包含数量 | 描述 |
jndi-name | 零或一个 | CMP数据源JNDI名称,是EJB模块中所有CMP实体EJB所使用的数据源 |
java元素代表应用客户端模块,包含下列子元素:
java元素
元素 | 包含数量 | 描述 |
ejb-ref | 零个或多个 | 映射ejb-jar.xml中相应的EJB引用到JNDI名称 |
resource-ref | 零个或多个 | 映射ejb-jar.xml中相应的资源引用到JNDI名称 |
resource-env-ref | 零个或多个 | 映射ejb-jar.xml中相应的资源环境引用到JNDI名称 |
web元素代表web应用模块,包含下列子元素:
web元素
元素 | 包含数量 | 描述 |
context-root | 零个或一个 | web应用的上下文根路径 |
ejb-ref | 零个或多个 | 映射ejb-jar.xml中相应的EJB引用到JNDI名称 |
ejb-local-ref | 零个或多个 | 映射ejb-jar.xml中相应的本地EJB引用到JNDI名称 |
resource-ref | 零个或多个 | 映射ejb-jar.xml中相应的资源引用到JNDI名称 |
resource-env-ref | 零个或多个 | 映射ejb-jar.xml中相应的资源环境引用到JNDI名称 |
mail-session元素包含下列子元素:
mail-session元素
元素 | 包含数量 | 描述 |
description | 零个或一个 | 为父元素提供文本描述信息 |
jndi-name | 一个 | 指定JNDI名称 |
property | 零个或多个 | 配置mail-session属性信息,一个设置两个属性:“mail.host”和“mail.from” |
property元素代表配置相关的属性信息,不包含子元素,但有两个属性:
名称 | 类型 | 缺省值 | 描述 |
name | 字符 | #REQUIRED | 属性名称 |
value | 字符 | #REQUIRED | 属性值 |
security-role元素代表Java EE应用安全角色到Apusic用户的映射,包含下列子元素:
security-role元素
元素 | 包含数量 | 描述 |
role-name | 一个 | Java EE应用中定义的角色名 |
principal | group | 一个或多个 | Apusic应用服务器中的用户或组 |