![]() |
Sun ONE Application Server 7 Java Bean 技术开发者指南 |
组装和部署 Enterprise Bean本节讲述如何在 Sun ONE Application Server 7 环境中组装和部署 Enterprise Bean,并提供用于创建 EJB XML 文件的元素和子元素的信息。
注意 有关完整的组装和部署信息,请参阅 Sun ONE 应用服务器开发者指南。开始学习 EJB 组装之前,您应已熟悉该部署资料。
本节包含以下主题:
一个列出所有与 EJB 相关元素的按字母顺序排列的列表包含在“元素列表”中。
EJB 结构
EJB Java ARchive (JAR) 文件是组装 Enterprise Bean 的标准格式。此文件包含了所有 Bean的 类(home、remote、local的接口和实现)、以及所有实用程序的类以及部署描述符(ejb-jar.xml 和 sun-ejb-jar.xml)。
开发者产生的 EJB JAR 文件包含一个或多个 Enterprise Bean,而且一般不包含组装说明;组装程序产生的 EJB JAR 文件包含一个或多个 Enterprise Bean,再加上描述如何把 Enterprise Bean 组合在单个应用程序部署单元的应用程序组装说明。
EJB JAR 文件可独立存在,不必作为 Enterprise ARchive (EAR) 文件的组成部分,或 EAR 文件的组成部分。
示例应用程序文件位于 install_root/samples/j2ee/。
创建部署描述符
J2EE 模块是一个或多个具有同一容器类型的 J2EE 组件的集合,这种容器类型包含该类型的两个部署描述符。一个描述符为 J2EE 标准,另一个描述符为 Sun ONE 应用服务器所特有。对于 Enterprise Bean,两个部署描述符文件都适用:
本章所述 Sun ONE 应用服务器所特有的文件。
- sun-cmp-mappings.xml
Sun ONE 应用服务器特有的一个文件,用于已部署 Bean是 使用容器管理持久性的情况下 。
注意 有关与容器管理持久性相关的 XML 文件的信息,请参阅“sun-cmp-mappings.xml 文件中的元素”。
创建部署描述符文件最容易的方法是使用管理界面或 Sun ONE Studio 4 IDE 部署 EJB 模块。有关详细信息,请参阅 Sun ONE 应用服务器开发者指南。有关 EJB XML 文件的示例,请参阅“示例 EJB XML 文件”。
创建这些文件之后,您就可以使用管理界面或组合使用编辑器和命令行实用程序(如 Ant)编辑这些文件,以便重新组装和重新部署已更新的部署描述符信息。
注意 如果喜欢,您可以手动创建部署描述符。
J2EE 标准部署描述符是按“1.3 J2EE 规范”描述。有关 EJB 部署描述符的详细信息,请参阅 Enterprise JavaBeans Specification 2.0 第 22 章。我们的示例应用程序开发一些 ANT 目标,它们有助于进行组装和部署。请参阅 Sun ONE 应用服务器开发者指南中的 ANT 信息。
部署 Enterprise Bean
部署、取消部署或重新部署 Enterprise Bean 时,不需要重新启动服务器。
注意 Stubs和skeletons是在部署期间生成的。对于一个肥客户端,可以使用带有Stubs和skeletons的 JAR 文件。
本节介绍以下主题:
使用管理界面
要使用管理界面部署 EJB 应用程序:
使用命令行界面
要使用命令行部署 Enterprise Bean:
- 请手动编辑部署描述符文件(ejb-jar.xml 和 sun-ejb-jar.xml)。
- 执行 Ant 构造命令(如 build jar),重新组合 JAR 模块。
- 使用 asadmin deploy 命令部署 JAR 模块。语法如下:
使用 Sun ONE Studio 4 IDE
您可以使用 Sun ONE Studio 4 IDE(与 Sun ONE 应用服务器捆绑在一起)组合和部署 Enterprise Bean。有关使用 Sun ONE Studio 4 的信息,请参阅 Sun ONE Studio 4 企业版指南。
注意 在 Sun ONE Studio 4 中,部署 Web 应用程序被称为执行 Web 应用程序。
重新加载 Enterprise Bean
如果您对 Enterprise Bean 进行代码更改,而且已经启用了动态重新加载的特性,就没有必要重新部署 Enterprise Bean 或重新启动服务器。您只能把已更改的文件放到应用程序的已部署目录(如 instance-dir/applications)中,这样就会选取更改。
要使用管理界面启用动态重新加载:
- 请在“管理”界面中,选择您的服务器实例。
- 选择“应用程序”。
- 选中“启用重新加载”,启用动态重新加载。
- 在 Reload Poll Interval(重新加载轮询间隔)字段中输入秒数, 设置为进行应用程序和模块代码更改检查以及动态重新加载的间隔时间。
- 单击“保存”。
有关详细信息,请参阅 Sun ONE 应用服务器管理员指南。
另外,要加载新的服务器文件,重新加载与 EJB 相关的更改,或重新加载部署描述符更改,您必须执行以下操作:
- 在已部署应用程序的根下创建一个命名为 .reload 的空文件:
- 每次对 Bean 或部署描述符进行更改时,都要保证更新 .reload 文件的时间戳(touch .reload in UNIX)。
重新加载监视器线程定期查看 .reload 文件的时间戳,以便检测任何更改。默认情况下,此间隔为两秒,并可通过更改 server.xml 文件中的 dynamic-reload-poll-interval-in-seconds 的值进行修改。
您可以通过多种方法部署 EJB 应用程序:
有关部署方面的更多详细信息,请参阅 Sun ONE 应用服务器开发者指南。
sun-ejb-jar_2_0-0.dtd 文件结构
sun-ejb-jar_2_0-0.dtd 文件定义 sun-ejb-jar.xml 文件的结构,包含该接口可以包含的元素以及这些元素可以具有的子元素和属性。sub-ejb-jar_2_0-0.dtd 文件位于 install-dir/lib/dtds 目录。
注意 不要编辑 sun-ejb-jar_2_0-0.dtd 文件;其内容会因 Sun ONE 应用服务器出现新版本而发生变化。
有关 DTD 文件和 XML 的一般信息,请参阅位于以下地址的 XML 规范:
DTD 文件(该文件可能出现在相应的 XML 文件中)中定义的每个元素都可以包含以下项目:
一个列出 所有与 EJB 相关元素的按字母顺序排列的列表包含在“元素列表”中。
子元素
元素可以包含子元素。例如,以下文件片段定义 cmp-resource 元素:
<!ELEMENT cmp-resource (jndi-name, default-resource-principal?)>
此 ELEMENT 标记指定一个名为 cmp-resource 的资源元素可以包含名为 jndi-name 和 default-resource-principal 的子元素,问号 (?) 表示可以有零个或一个 default-resource-principal 子元素。
每个子元素可以带有一个可选字符后缀,确定子元素可以出现的次数。
下表显示子元素的可选后缀字符如何确定子元素的要求规则或允许出现的次数。左列列出以字符结尾的子元素,右列列出相应的要求规则。
子元素后缀的要求规则
后缀
出现次数
element*
可以包含零或多个此子元素。
?element
可以包含零或一个此子元素。
element+
可以包含零或多个此子元素。
element(没有后缀)
必须仅包含一个此子元素。
如果一个元素不能包含其他元素,您会看到 EMPTY 或 (#PCDATA),而不是用括号括起来的元素名称列表。
数据
有些元素包含字符数据,而不是子菜单。这些元素具有以下格式的定义:
<!ELEMENT element-name (#PCDATA)>
例如:
<!ELEMENT description (#PCDATA)>
在 Sun ONE 应用服务器 XML 文件中,空格被视为数据元素中的数据的组成部分。因此,用数据元素隔开的数据之前或之后不应有额外空格。例如:
<description>class name of session manager</description>
<password>secret</password>
属性
元素可以包含属性(名称、值对)。属性是用 ATTLIST 标记在属性列表中定义的。
sun-ejb-jar.xml 文件中没有任何元素包含属性。
sun-ejb-jar.xml 文件中的元素
所有与 EJB 相关的元素的字母顺序列表包含在“元素列表”中。
注意 有关与容器管理持久性映射关联的 DTD 和 XML 文件的信息,请参阅“sun-cmp-mappings.xml 文件中的元素”。
本节讲述 sun-ejb-jar_2_0-0.dtd 文件中的 XML 元素。为了您的方便,对元素进行了以下分组:
- 一般元素
- 角色映射元素
- 引用元素
- 安全元素
- 持久性元素
- 合用和缓存元素
- 类元素
注意 如果不在 sun-ejb-jar.xml 文件中为 Enterprise Bean 指定任何配置,配置就默认为 server.xml 文件的 ejb-container 元素中相应的值(如果存在等效物的话)。您可以在 server.xml 文件中更改默认值;这些更改将反应在没有定义该值的任何 Enterprise Bean 之中。
一般元素
下面列出一般元素:
ejb
定义应用程序内单个 Enterprise Bean 的运行时属性。下面列出的子元素适用于下列特定 Enterprise Bean:
- 所有 Bean 类型—ejb-name, ejb-ref, resource-ref, resource-env-ref, cmp, ior-security-config, gen-classes, jndi-name
- 无状态会话 Bean 和消息驱动型 Bean—bean-pool
- 有状态会话 Bean 和实体 Bean—bean-cache
- 实体 Bean (BMP)—is-read-only-bean, refresh-period-in-seconds, commit-option, bean-cache
- 消息驱动型 Bean—mdb-connection-factory, jms-durable-subscription-name, jms-max-messages-load, bean-pool
子元素
下表描述 ejb 元素的子元素。
ejb 子元素
示例
<ejb>
ejb-name>CustomerEJB</ejb-name>
<jndi-name>customer</jndi-name>
<resource-ref>
<res-ref-name>jdbc/SimpleBank</res-ref-name>
<jndi-name>jdbc/PointBase</jndi-name>
</resource-ref>
<is-read-only-bean>false</is-read-only-bean>
<commit-option>B</commit-option>
<bean-pool>
<steady-pool-size>10</steady-pool-size>
<resize-quantity>10</resize-quantity>
<max-pool-size>100</max-pool-size>
<pool-idle-timeout-in-seconds>
600
</pool-idle-timeout-in-seconds>
</bean-pool>
<bean-cache>
<max-cache-size>100</max-cache-size>
<resize-quantity>10</resize-quantity>
<removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
<victim-selection-policy>LRU</victim-selection-policy>
</bean-cache>
</ejb>ejb-name
匹配其引用 Enterprise Bean 的显示名称。此名称是由 EJB JAR 文件制作者指定的,用来对 EJB JAR 文件的部署描述符中的 Enterprise Bean 进行命名。该名称在同一 EJB JAR 文件中的 Enterprise Bean 名称中是唯一的。
部署描述符中的 ejb-name 与部署者将指定到 EJB 的主页的 JNDI 名称之间不存在结构上的关系。
子元素
无
示例
<ejb-name>EmployeeService</ejb-name>
enterprise-beans
为应用程序中的 EJB JAR 文件指定所有运行时属性。
子元素
下表描述 enterprise-bean 元素的子元素。
enterprise-beans 子元素
示例
<enterprise-beans>
<ejb>
<ejb-name>CustomerEJB</ejb-name>
<jndi-name>customer</jndi-name>
<resource-ref>
<res-ref-name>jdbc/SimpleBank</res-ref-name>
` <jndi-name>jdbc/PointBase</jndi-name>
</resource-ref>
<is-read-only-bean>false</is-read-only-bean>
<commit-option>B</commit-option>
<bean-pool>
<steady-pool-size>10</steady-pool-size>
<resize-quantity>10</resize-quantity>
<max-pool-size>100</max-pool-size>
<pool-idle-timeout-in-seconds>
600
</pool-idle-timeout-in-seconds>
</bean-pool>
<bean-cache>
<max-cache-size>100</max-cache-size>
<resize-quantity>10</resize-quantity>
<removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
<victim-selection-policy>LRU</victim-selection-policy>
</bean-cache>
</ejb>
</enterprise-beansis-read-only-bean
指定此 Bean 为只读 Bean 的标志。
子元素
无
示例
<is-read-only-bean>false</is-read-only-bean>
refresh-period-in-seconds
指定必须从数据源刷新 read-only-bean 的速率。如果值小于或等于零,则从不刷新 Bean;如果值大于零,则按指定间隔时间刷新 Bean 实例。此速率只是对容器的提示。默认值为 600。
子元素
无
sun-ejb-jar
为应用程序中某个 EJB JAR 文件定义 Sun ONE 应用服务器特有的配置。这是根元素;一个 sun-ejb-jar.xml 文件中只能有一个 sun-ejb-jar 元素。
有关此文件的示例,请参阅“sun-ejb-jar.xml 文件中的示例”。
子元素
下表描述 sun-ejb-jar 元素的子元素。
sun-ejb-jar 子元素
子元素
必需
说明
零或多个
把相应的 J2EE XML 文件中的角色映射到某个用户或组。
仅一个
描述应用程序中 EJB JAR 文件的所有运行时属性。
unique-id
指定唯一系统标识符。此数据在部署/重新部署时自动生成和更新。开发者在部署之后不要更改这些值。
子元素
无
角色映射元素
角色映射元素将一个角色就像在 EJB JAR role-name 实体中指定一样映射到某个针对环境的用户或组。如果映射到一个用户,该用户必须是当前领域内存在的具体用户,该用户可以使用当前身份验证方法登录到服务器。如果映射到组,领域必须支持组,而且该组必须是当前领域内存在的一个具体组。为了有用,该领域中必须至少有一个属于该组的用户。
角色映射元素如下:
group-name
指定组名称。
子元素
无
principal
定义在平台指定用户名的节点。
子元素
下表描述 principal 元素的子元素。
principal 子元素
子元素
必需
说明
仅一个
指定用户名。
principal-name
在指定 run-as 角色的 Enterprise Bean 中指定主(用户)名称。
子元素
无
role-name
在 ejb-jar.xml 文件中的 security-role 元素中指定 role-name。
子元素
无
示例
<role-name>employee</role-name>
security-role-mapping
将角色映射到用户和组。
子元素
下表描述 security-role-mapping 元素的子元素。
security-role-mapping 子元素
子元素
必需
说明
仅一个
从所映射的 ejb-jar.xml 文件指定 role-name。
至少需要一个 principal-name 或 group-name
在指定 run-as 角色的 Bean 中指定主(用户)名称。
至少需要一个 principal-name 或 group-name
指定组名称。
server-name
指定部署应用程序的服务器的名称。
子元素
无
引用元素
引用元素如下:
- ejb-ref
- ejb-ref-name
- jndi-name
- pass-by-reference
- res-ref-name
- resource-env-ref
- resource-env-ref-name
- resource-ref
ejb-ref
把绝对 jndi-name 名称映射到相应的 J2EE XML 文件中的 ejb-ref 元素。ejb-ref 元素用于对于某个 EJB 主页的引用的声明。
适用于会话 Bean 或实体 Bean。.
子元素
下表描述 ejb-ref 元素的子元素。
ejb-ref 子元素
子元素
必需
说明
仅一个
在相应的 J2EE EJB JAR 文件 ejb-ref 项中指定 ejb-ref-name。
仅一个
指定绝对 jndi-name。
ejb-ref-name
在相应的 J2EE XML 文件 ejb-ref 项中指定 ejb-ref-name。在 Enterprise Bean 内,名称必须是唯一的。建议名称以 ejb/ 为前缀。
子元素
无
示例
<ejb-ref-name>ejb/Payroll</ejb-ref-name>
jndi-name
指定绝对 jndi-name.
适用于所有 Enterprise Bean。
子元素
无
示例
<jndi-name>jdbc/PointBase</jndi-name>
pass-by-reference
指定servlet或 Enterprise Bean 使用的传递方法,该servlet或 Enterprsie Bean 调用同一过程内共存的另一个 Bean 中的远程接口方法。默认值为 False(假)。
注意 pass-by-reference 标志仅适用于对远程接口的方法调用。就像在 Enterprise JavaBeans Specification 2.0 中定义的一样,对本地接口的调用使用 pass-by-reference 语义。
- 如果是 False(如果此元素不存在,则为默认值),此应用程序使用 pass-by-value 语义,这是 Enterprise JavaBeans Specification 2.0 所要求的。
- 如果是 True,则此应用程序使用 pass-by-reference 语义。
当某个servlet或 Enterprise Bean 调用共处同一过程内的另一个 Bean 中的远程接口方法时,默认情况下,Sun ONE 应用服务器制作所有调用参数的副本,以便保留 pass-by-value 语义。这会增加调用额外开销,降低性能。
但是,如果调用方法不使作为参数传递的对象变异,则无需制作对象副本就可以安全地传递对象本身。为此,请把 pass-by-reference 值设置为 True(真)。
要将 pass-by-reference 语义应用到一个包含多个 EJB 模块的整个 J2EE 应用程序,您可以在 sun-application.xml 文件中设置同一元素。如果您想在 Bean 级和应用程序级同时使用 pass-by-reference,则 Bean 级优先于应用程序级。
有关 server.xml 文件的信息,请参阅 Sun ONE 应用程序服务器开发者指南以及管理员配置文件参考。
子元素
无
res-ref-name
在相应的 J2EE ejb-jar.xml 文件 resource-ref 项中指定 res-ref-name。res-ref-name 元素指定资源管理器connection factory引用的名称。该名称是一个与 java:comp/env 上下文相关的 JNDI 名称。该名称在 Enterprise Bean 内必须是唯一的。
子元素
无
示例
<res-ref-name>jdbc/SimpleBank</res-ref-name>
resource-env-ref
把相应的 J2EE ejb-jar.xml 文件 resource-env-ref 项中的 resource-env-ref-name i映射到 server.xml 文件中 resources 元素中的一个绝对 jndi-name 中。resource-env-ref 元素包含一个 Enterprise Bean 的引用的声明,该引用针对与该 Bean 的环境中资源关联的某个被管对象。
用于实体 Bean、消息驱动型 Bean 以及会话 Bean。
子元素
下表描述 resource-env-ref 元素的子元素。
resource-env-ref 子元素
子元素
必需
说明
仅一个
在相应的 J2EE ejb-jar.xml 文件 resource-env-ref 项中指定 resource-env-ref-name。
仅一个
指定绝对 jndi-name。
示例
<resource-env-ref>
<resource-env-ref-name>
jms/StockQueueName
</resource-env-ref-name>
<jndi-name>jms/StockQueue</jndi-name>
</resource-env-ref>resource-env-ref-name
在相应的 J2EE ejb-jar.xml 文件 resource-env-ref 项中指定 resource-ref-name。resource-env-ref-name 元素指定资源环境引用的名称;其值为 EJB 代码中使用的环境项名称。名称是一个与 java:comp/env 上下文相关的 JNDI 名称,而且在一个 Enterprise Bean 内必须是唯一的。
子元素
无
示例
<resource-env-ref-name>jms/StockQueue</resource-env-ref-name>
resource-ref
将相应的 J2EE ejb-jar.xml 文件 resource-ref 项中的 res-ref-name 映射到 server.XML 文件中 resources 元素中的绝对 jndi-name。resource-ref 元素包含一个针对外部资源的 EJB 引用的 EJB 声明。
注意 从 JMS connection factory中获得的连接不可以在 Sun ONE 应用服务器当前版本中共享。ejb-jar.xml 文件 resource-ref 元素中的 res-sharing-scope 元素为 JMS connection factory所忽视。
用于实体 Bean、消息驱动型 Bean 以及会话 Bean。
注意 当 resource-ref 为 Sun ONE 消息队列指定 JMS connection factory时,default-resource-principal(名称/密码)必须存在于 Sun ONE 消息队列用户存储库中。有关如何管理 Sun ONE 消息队列用户存储库的信息,请参阅 Sun ONE 消息队列管理员指南中的“安全管理”一章。
子元素
下表描述 resource-ref 元素的子元素。
resource-ref 子元素
子元素
必需
说明
仅一个
在相应的 J2EE ejb-jar.xml 文件 resource-ref 项中指定 res-ref-name。
仅一个
指定绝对 jndi-name。
零或一个
指定对于资源管理器的默认登录设置(名称/密码)。
示例
<resource-ref>
<res-ref-name>jdbc/EmployeeDBName</res-ref-name>
<jndi-name>jdbc/EmployeeDB</jndi-name>
</resource-ref>消息传递元素
本节包含下列与消息传递关联的元素:
jms-durable-subscription-name
指定与消息驱动型 Bean 类关联的可持久订阅。仅适用于“Java 消息服务主题目标”类型,而且只能是在消息驱动型 Bean 部署描述符订阅持久性为 Durable(可持久)的情况下。
子元素
无
jms-max-messages-load
同时为要服务的消息驱动型 Bean 指定要加载到 Java 消息服务会话的消息的最大数目。默认值为 1。
子元素
无
mdb-connection-factory
指定与消息驱动型 Bean 的connection factory。“队列”或“主题”类型必须与“Java 消息服务目标”类型相一致,而“Java 消息服务目标”类型与消息驱动型 Bean 类相关联。
子元素
下表描述 mdb-connection-factory 元素的子元素。
mdb-connection-factory 子元素
子元素
必需
说明
仅一个
指定绝对 jndi-name.
零或一个
指定到资源管理器的默认登录设置(名称/密码)。
安全元素
本节讲述与身份验证、授权和一般安全关联的元素。其中包括以下元素:
- as-context
- auth-method
- caller-propagation
- confidentiality
- default-resource-principal
- establish-trust-in-client
- establish-trust-in-target
- integrity
- ior-security-config
- name
- password
- realm
- required
- sas-context
- transport-config
as-context
指定将用来验证客户端身份的身份验证机制。如果指定,它将是 USERNAME_PASSWORD。
子元素
下表描述 as-context 元素的子元素。
as-context 子元素
子元素
必需
说明
仅一个
指定身份验证方法。唯一支持的值为 USERNAME_PASSWORD。
仅一个
指定验证用户身份的领域。
仅一个
指定是否必须将指定的身份验证方法用于客户端身份验证。如果是这样,必需在 as-context 的 target_requires 字段中设置 EstablishTrustInClient 位。值为真或假。
auth-method
指定身份验证方法。唯一支持的值为 USERNAME_PASSWORD。
子元素
无
caller-propagation
指定目标是否将接受传播的调用者标识符。值为 NONE、SUPPORTED 或 REQUIRED。
子元素
无
confidentiality
指定目标是否支持受隐私政策保护的消息。值为 NONE、SUPPORTED 或 REQUIRED。
子元素
无
default-resource-principal
指定资源管理器的默认登录(名称/密码)。
子元素
下表描述 default-resource-principal 元素的子元素。
default-resource-principal 子元素
子元素
必需
说明
仅一个
指定用于登录到资源管理器的默认资源主名称。
仅一个
指定默认资源主名称的密码。
establish-trust-in-client
指定目标是否能够验证客户的身份。值为 NONE、SUPPORTED 或 REQUIRED。
子元素
无
establish-trust-in-target
指定目标是否能够验证到达客户端的身份。值为 NONE、SUPPORTED 或 REQUIRED。
子元素
无
integrity
指定目标是否支持保护完整性的消息。值为 NONE、SUPPORTED 或 REQUIRED。
子元素
无
ior-security-config
指定输入/输出重定向 (IOR) 的安全信息。
子元素
下表描述 ior-security-config 元素的子元素。
ior-security-config 子元素
子元素
必需
说明
零或一个
指定传输的安全信息。
零或一个
描述将用于对客户端进行身份验证的身份验证机制。如果指定,它将是 USERNAME_PASSWORD。
零或一个
描述 sas-context 字段。
name
指定身份。
子元素
无
password
指定安全机制完成身份验证所需的密码。
子元素
无
realm
指定验证用户身份的领域。
子元素
无
required
指定是否必须将指定的身份验证方法用于客户端身份验证。如果是这样,则将在 as-context 的 target_requires 字段中设置 EstablishTrustInClient 位。值为 True(真)或 False(假)。
子元素
无
sas-context
描述 sas-context 字段。
子元素
下表描述 sas-context 元素的子元素。
sas-context 子元素
子元素
必需
说明
仅一个
指定目标是否将接受传播的调用者身份。值为 NONE、SUPPORTED 或 REQUIRED。
transport-config
指定安全传输信息。
子元素
下表描述 transport-config 元素的子元素。
transport-config 子元素
持久性元素
本节描述与容器管理持久性 (CMP)、持久性管理器以及持久性供应商关联的元素。 有关使用这些元素的信息,请参阅“使用容器管理持久性”。
包括下面的元素:
- cmp
- cmp-resource
- concrete-impl
- finder
- is-one-one-cmp
- mapping-properties
- method-name
- one-one-finders
- pc-class
- pm-class-generator
- pm-config
- pm-descriptor
- pm-descriptors
- pm-identifier
- pm-inuse
- pm-mapping-factory
- pm-version
- query-filter
- query-params
- query-variables
cmp
描述用于 EJB1.1 和 EJB2.0 Bean 的容器管理持久性 (CMP) 实体 Bean 对象的运行时信息。 这是描述一个 Bean 的映射信息的文件的指针。
子元素
下表描述 cmp 元素的子元素。
cmp 子元素
子元素
必需
说明
仅一个
包含指定持久性供应商的特定对象对关系 (O/R) 数据库映射文件的位置的数据。
仅一个
包含指定持久性供应商的特定具体类名称的位置的数据。
零或一个
包含指定持久性供应商的特定类的位置的数据。
零或一个
包含容器管理持久性 (CMP) 1.1 的布尔细节。用于将 CMP 1.1 与旧描述符联系在一起。
零或一个
描述容器管理持久性 (CMP) 1.1 的查找程序。
cmp-resource
指定用来在一个 EJB JAR 文件中存储容器管理持久性 (CMP) Bean 的数据库。
子元素
下表描述 cmp-resource 元素的子元素。
cmp-resource 子元素
子元素
必需
说明
仅一个
指定绝对 jndi-name。
零或一个
指定资源引用的默认运行时绑定。
concrete-impl
指定持久性供应商的某个具体类名称的位置。
子元素
无
finder
使用方法名和查询描述容器管理持久性 1.1 的查找程序。
子元素
下表描述 finder 元素的子元素。
finder 子元素
子元素
必需
说明
仅一个
指定查询字段的方法名。
仅一个
可选数据,指定容器管理持久性 (CMP) 1.1 查找程序的查询参数。
仅一个
指定容器管理持久性 (CMP) 1.1 查找程序的查询筛选器。
仅一个
可选数据,指定容器管理持久性 (CMP) 1.1 查找程序的查询表达式中的变量。
is-one-one-cmp
指定容器管理持久性 1.1 的布尔细节。 用于把 CMP 1.1 与旧描述符联系起来。
子元素
无
mapping-properties
指定持久性供应商的特定对象对关系 (O/R) 数据库映射文件的位置。多数持久性供应商使用一个项目的概念,该概念代表所有相关 Bean 机器相关类,并可部署为单个单元。可以有与项目关联的供应商特有 XML 文件。
子元素
无
method-name
指定查询字段的方法名。method-name 元素包含某个 EJB 方法的名称或星号 (*) 字符。当该元素表示某个 EJB 组件和主接口的所有方法时,就使用星号。
示例
<method-name>create</method-name>
<method-name>*</method-name>
子元素
无
one-one-finders
描述容器管理持久性 (CMP) 1.1 的查看程序。
子元素
下表描述 one-one-finders 元素的子元素。
one-one-finders 子元素
子元素
必需
说明
必须有一个或多个
使用一个方法名和查询描述容器管理持久性 (CMP) 1.1。
pc-class
指定持久性供应商的具体类。
子元素
无
pm-class-generator
指定要使用的供应商特有具体类生成器。 这是供应商特有的类的名称。
子元素
无
pm-config
指定要使用的供应商特有配置文件。
子元素
无
pm-descriptor
描述与实体 Bean 关联的持久性管理器的属性。
子元素
下表描述 pm-descriptor 元素的子元素。
pm-descriptor 子元素
子元素
必需
说明
仅一个
指定提供持久性管理器实施的供应商。例如,这可能是 Sun ONE 应用服务器容器管理持久性或第三方供应商。
仅一个
指定要使用持久性管理器供应商产品的哪个版本。
零或一个
指定要使用的供应商特有的配置文件。
零或一个
指定要生成哪个供应商特有具体类生成器。这是供应商特有的类的名称。
零或一个
指定要使用哪个供应商特有的映射工厂。这是供应商特有的类的名称。
pm-descriptors
描述持久性管理器描述符。必须在规定时间内使用其中一个描述符。这基本上适用于 Sun ONE 应用服务器可插拔持久性管理器 API。
子元素
下表描述 pm-descriptors 元素的子元素。左列列出子元素名称,中间列表示要求规则,而右列描述元素的功能。
pm-descriptors 子元素
子元素
必需
说明
一或多个
描述与实体 Bean 关联的持久性管理器的属性。
仅一个
指定是否必须使用此特定持久性管理器。
pm-identifier
指定提供持久性管理器实施的供应商。例如,这可能是 Sun ONE 应用服务器容器管理持久性或第三方供应商。
子元素
无
pm-inuse
指定是否必须使用此特定持久性管理器。
子元素
下表描述 pm-inuse 元素的子元素。
pm-insue 子元素
子元素
必需
说明
仅一个
包含指定提供持久性管理器实施的供应商。例如,这可以是 Sun ONE 应用服务器容器管理持久性或第三方供应商。
仅一个
包含指定要使用哪个版本的持久性管理器供应商产品。
pm-mapping-factory
指定要使用哪个供应商特有的映射工厂。这与供应商特有的类名称相同。
子元素
无
pm-version
指定要使用哪个版本的持久性管理器供应商产品。
子元素
无
query-filter
指定容器管理持久性 1.1 查找程序的查询筛选器。可选。
子元素
无
query-params
指定容器管理持久性 1.1 查找程序的查询参数。
子元素
无
query-variables
指定容器管理持久性 1.1 查找程序的查询表达式中的变量。可选。
子元素
无合用和缓存元素
本节讲述与缓存、超时和 EJB 池关联的元素。这些元素用于控制内存使用和性能调整。有关详细信息,请参阅 Sun ONE 应用服务器产品性能调整和大小调整指南。
下面讨论以下元素:
- bean-cache
- bean-pool
- cache-idle-timeout-in-seconds
- commit-option
- is-cache-overflow-allowed
- max-cache-size
- max-pool-size
- max-wait-time-in-millis
- pool-idle-timeout-in-seconds
- removal-timeout-in-seconds
- resize-quantity
- steady-pool-size
- victim-selection-policy
bean-cache
指定实体 Bean 缓存属性。用于实体 Bean 和有状态会话 Bean。
子元素
下表描述 bean-cache 元素的子元素。
bean-cache 子元素
示例
<bean-cache>
<max-cache-size>100</max-cache-size>
<cache-resize-quantity>10</cache-resize-quantity>
<removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
<victim-selection-policy>LRU</victim-selection-policy>
<cache-idle-timeout-in-seconds>
600
</cache-idle-timeout-in-seconds>
<removal-timeout-in-seconds>5400</removal-timeout-in-seconds>
</bean-cache>bean-pool
指定无状态会话 Bean、实体 Bean 和消息驱动型 Bean 的池属性。
子元素
下表描述 bean-pool 元素的子元素。
bean-pool 子元素
示例
<bean-pool>
<steady-pool-size>10</steady-pool-size>
<resize-quantity>10</resize-quantity>
<max-pool-size>100</max-pool-size>
<pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
</bean-pool>cache-idle-timeout-in-seconds
可以选择指定 Bean 可在缓存中保持闲置的最长时间。 此时间数量之后,容器可以钝化此 Bean。值 0 指定 Bean 可能永远不会成为钝化候选者。默认值为 600。
适用于有状态会话 Bean 和实体 Bean。
子元素
无
commit-option
可以选择指定事务处理完成时使用的 commit 选项。Sun ONE 应用服务器的有效值为 B 或 C。默认值为 B。
注意 Sun ONE Application Server 7 版不支持 commit 选项 A。
适用于实体 Bean。
子元素
无
示例
<commit-option>B</commit-option>
is-cache-overflow-allowed
不赞成此元素,而且不要使用。
max-cache-size
可以选择指定缓存中允许存在的 Bean 的最大数目。值零表示未绑定缓存。实际上,没有硬性限制。max-cache-size 限制只是对缓存实施的提示。默认值为 512。
适用于有状态会话 Bean 和实体 Bean。
子元素
无
示例
max-cache-size>100</max-cache-size>
max-pool-size
可以指定池中 Bean 实例的最大数目。值从 0(1 用于消息驱动型 Bean)到 MAX_INTEGER。值 0 指池未绑定。默认值为 64。
适用于所有 Bean。
子元素
无
示例
max-wait-time-in-millis
不赞成此元素,而且不要使用。
pool-idle-timeout-in-seconds
可以选择指定池中允许 Bean 实例保持闲置的最大时间(以秒计)。此超时到期时,池中的 Bean 实例成为要钝化或删除的候选者。这是对服务器的提示。值 0 指定闲置 Bean 可以无限地保留在池中。默认值为 600。
适用于无状态会话 Bean、实体 Bean 和消息驱动型 Bean。
注意 对于无状态会话 Bean 或消息驱动型 Bean,可以在超时到期时删除 Bean(收集的垃圾)。
子元素
无
示例
<pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
removal-timeout-in-seconds
可以选择指定删除某个 Bean(超时)之前该 Bean 可以在容器中保持闲置的时间数量。值 0 指定容器不自动删除非活动 Bean。默认值为 5400。
如果 removal-timeout-in-seconds 小于或等于 cache-idle-timeout-in-seconds,则在不钝化的情况下立即删除 Bean。
适用于有状态会话 Bean。
有关相关信息,请参阅 cache-idle-timeout-in-seconds。
子元素
无
示例
<removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
resize-quantity
可以选择指定要对其执行以下操作的 Bean 实例的数目:
- 创建,如果在此池具有的 Bean 数量少于 steady-pool-size(仅适用于要创建的池)时有请求到达。如果具有的 Bean 数量多于 steady-pool-size 减 resize-quantity,则仍然创建 resize-quantity。
- 删除,当 pool-idle-timeout-in-seconds 计时器到期,而且清除器线程删除任何未用实例。
值从 0 到 MAX_INTEGER。不把池大小调整在 steady-pool-size 以下。默认值为 16。
适用于无状态会话 Bean、实体 Bean 和消息驱动型 Bean。
对于 EJB 池,默认值可以是 server.xml 文件中 ejb-container 元素 pool-resize-quantity 的值。默认值为 16。
对于 EJB 缓存,默认值可以是 server.xml 文件中 ejb-container 元素 cache-resize-quantity 的值。默认值为 32。
对于消息驱动型 Bean,默认值可以是 server.xml 文件中 mdb-container pool-resize-quantity 元素的值。默认值为 2。
子元素
无
示例
<resize-quantity>10</resize-quantity>
steady-pool-size
可以选择指定应在池中保留的 Bean 实例的最初和最小数目。默认值为 32。
适用于无状态会话 Bean 和消息驱动型 Bean。
子元素
无
示例
<steady-pool-size>10</steady-pool-size>
victim-selection-policy
可以选择指定如何选择要钝化的有状态会话 Bean。可能的值为 First In、First Out (FIFO)、Least Recently Used (LRU)、Not Recently Used (NRU)。默认值为 NRU,该值实际上是伪 LRU。
注意 用户不能插入其自己的牺牲者选择算法。
牺牲者一般钝化在备份存储区内(一般为文件系统或数据库)。此存储区在启动时清除,而且也是由删除 removal-timeout-in-seconds 指定的闲置项的一个周期性后台进程进行的。 备份存储区受后台线程(或清扫器线程监视),该线程删除不需要的项。
适用于有状态的会话 Bean。
子元素
无
示例
<victim-selection-policy>LRU</victim-selection-policy>
类元素
本节描述与类关联的元素。包括以下元素:
gen-classes
指定一个 Bean 的所有已生成类名称。
注意 这是在部署/重新部署时由服务器自动生成。不要由开发者指定,或在部署后更改。
子元素
下表描述 gen-class 元素的子元素。
gen-classes 子元素
子元素
必需
说明
零或一个
指定生成的 EJBObject impl 类的完全合格的类名称。
零或一个
指定生成的 EJBLocalObject impl 类的完全合格的类名称。
零或一个
指定生成的 EJBHome impl 类的完全合格的类名称。
零或一个
指定生成的 EJBLocalHome impl 类的完全合格的类名称。
local-home-impl
指定生成的 EJBLocalHome impl 类的完全合格的类名称。
注意 这是在部署/重新部署时由服务器自动生成。不要由开发者指定,或在部署后更改。
子元素
无
local-impl
指定生成的 EJBLocalObject impl 类的完全合格的类名称。
注意 这是在部署/重新部署时由服务器自动生成。不要由开发者指定,或在部署后更改。
子元素
无
remote-home-impl
指定生成的 EJBHome impl 类的完全合格的类名称。
注意 这是在部署/重新部署时由服务器自动生成。不要由开发者指定,或在部署后更改。
子元素
无
remote-impl
指定生成的 EJBObject impl 类的完全合格的类名称。
注意 这是在部署/重新部署时由服务器自动生成。不要由开发者指定,或在部署后更改。
子元素
无
示例 EJB XML 文件
本节包括以下示例文件:
有关与 Enterprise Bean 关联的元素的信息,请参阅“sun-ejb-jar.xml 文件中的元素”以及 Sun ONE 应用服务器开发者指南。
示例 ejb-jar.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN'
'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar>
<description>no description</description>
<display-name>CustomerJAR</display-name>
<enterprise-beans>
<entity>
<description>no description</description>
<display-name>CustomerEJB</display-name>
<ejb-name>CustomerEJB</ejb-name>
<home>samples.SimpleBankBMP.ejb.CustomerHome</home>
<remote>samples.SimpleBankBMP.ejb.Customer</remote>
<ejb-class>samples.SimpleBankBMP.ejb.CustomerEJB</ejb-class>
<persistence-type>Bean</persistence-type>
<prim-key-class>java.lang.String</prim-key-class>
<reentrant>False</reentrant>
<security-identity>
<description></description>
<use-caller-identity></use-caller-identity>
</security-identity>
<resource-ref>
<res-ref-name>jdbc/SimpleBank</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</entity>
</enterprise-beans
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>CustomerEJB</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>示例 sun-ejb-jar.xml 文件
有关这些元素的信息,请参阅“sun-ejb-jar.xml 文件中的元素”。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Sun ONE Application Server 7.0 EJB 2.0//EN'
'http://www.sun.com/software/sunone/appserver/dtds/sun-ejb-jar_2_0-0.dtd'>
<sun-ejb-jar>
<display-name>First Module</display-name>
<enterprise-beans>
<ejb>
<ejb-name>CustomerEJB</ejb-name>
<jndi-name>customer</jndi-name>
<resource-ref>
<res-ref-name>jdbc/SimpleBank</res-ref-name>
` <jndi-name>jdbc/PointBase</jndi-name>
</resource-ref>
<is-read-only-bean>false</is-read-only-bean>
<commit-option>B</commit-option>
<bean-pool>
<steady-pool-size>10</steady-pool-size>
<resize-quantity>10</resize-quantity>
<max-pool-size>100</max-pool-size>
<pool-idle-timeout-in-seconds>600</pool-idle-timeout-in-seconds>
</bean-pool>
<bean-cache>
<max-cache-size>100</max-cache-size>
<resize-quantity>10</resize-quantity>
<removal-timeout-in-seconds>3600</removal-timeout-in-seconds>
<victim-selection-policy>LRU</victim-selection-policy>
</bean-cache>
</ejb>
</enterprise-beans>
</sun-ejb-jar>
上一部分 | | |