Sun ONE logo上一部分 | 目录 | 索引 | 下一部分
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.xmlsun-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 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 应用程序:

  1. 打开服务器实例下的“应用程序”组件。

  2. 转到“EJB 模块”页。

  3. 单击“部署”。

  4. 输入 JAR 模块的完整路径(或单击“浏览”查找该模块),然后单击“确定”。

使用命令行界面 

要使用命令行部署 Enterprise Bean:

  1. 请手动编辑部署描述符文件(ejb-jar.xmlsun-ejb-jar.xml)。

  2. 执行 Ant 构造命令(如 build jar),重新组合 JAR 模块。

  3. 使用 asadmin deploy 命令部署 JAR 模块。语法如下:

    asadmin deploy -type ejb [-name component-name] [-force=true] [-upload=true] -instance instancename filepath

    例如,以下命令将 EJB 应用程序部署为一个独立模块:

    asadmin deploy -type ejb -instance inst1 myEJB.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)中,这样就会选取更改。

要使用管理界面启用动态重新加载:

  1. 请在“管理”界面中,选择您的服务器实例。

  2. 选择“应用程序”。

    显示“应用程序属性”页。

  3. 选中“启用重新加载”,启用动态重新加载。

  4. 在 Reload Poll Interval(重新加载轮询间隔)字段中输入秒数, 设置为进行应用程序和模块代码更改检查以及动态重新加载的间隔时间。

  5. 单击“保存”。

有关详细信息,请参阅 Sun ONE 应用服务器管理员指南

另外,要加载新的服务器文件,重新加载与 EJB 相关的更改,或重新加载部署描述符更改,您必须执行以下操作:

  1. 在已部署应用程序的根下创建一个命名为 .reload 的空文件:

    instance_dir/applications/j2ee-apps/app_name/.reload

    或在单独部署模块的根下创建该文件:

    instance_dir/applications/j2ee-modules/module_name/.reload

  2. 每次对 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 规范:

http://www.w3.org/TR/REC-xml

DTD 文件(该文件可能出现在相应的 XML 文件中)中定义的每个元素都可以包含以下项目:

一个列出 所有与 EJB 相关元素的按字母顺序排列的列表包含在“元素列表”中。

子元素

元素可以包含子元素。例如,以下文件片段定义 cmp-resource 元素:

<!ELEMENT cmp-resource (jndi-name, default-resource-principal?)>

ELEMENT 标记指定一个名为 cmp-resource 的资源元素可以包含名为 jndi-namedefault-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 元素。为了您的方便,对元素进行了以下分组:

一般元素

下面列出一般元素:

ejb

定义应用程序内单个 Enterprise Bean 的运行时属性。下面列出的子元素适用于下列特定 Enterprise Bean:

子元素

下表描述 ejb 元素的子元素。

   ejb 子元素  


子元素

必需

说明

ejb-name

 

仅一个

 

匹配引用 Bean 的 Bean 显示名称。 

 

jndi-name

 

零或多个

 

指定绝对 jndi-name。如果是消息驱动型 Bean,这是与消息驱动型 Bean 类关联的 Java 消息服务“队列”或“主题”目标资源对象的 JNDI 名称。无论该名称是“队列”还是“主题”类型,都取决于消息驱动型部署描述符 message-driven-destination 中的目标类型。如果未指定任何 message-driven-destination 部署描述符,这就默认为“队列”类型。

 

ejb-ref

 

零或多个

 

将绝对 JNDI 名称映射到相应的 J2EE XML 文件中的 ejb-ref 元素。

 

resource-ref

 

零或多个

 

将绝对 JNDI 名称映射到相应的 J2EE XML 文件中的 resource-ref 中。

 

resource-env-ref

 

零或多个

 

将绝对 JNDI 名称映射到相应的 J2EE XML 文件中的 resource-env-ref 中。

 

pass-by-reference

 

零或一个

 

当某个servlet或 EJB 调用共处于同一进程内的另一个 Bean 时,Sun ONE 应用服务器不会自动对所有调用参数进行整理。

 

cmp

 

零或一个

 

指定用于 EJB1.1 和 EJB2.0 Bean 的容器管理持久性 (CMP) EntityBean 对象的运行时信息。这是描述一个 Bean 的映射信息的文件的指针。

 

principal

 

零或一个

 

在指定 run-as 角色的 Enterprise Bean 中指定主要(用户)名称。

 

mdb-connection-factory

 

零或一个

 

指定与消息驱动型 Bean 关联的connection factory。

 

jms-durable-subscription-name

 

零或一个

 

包含指定与消息驱动型 Bean 关联的可持续订阅的数据。

 

jms-max-messages-load

 

零或一个

 

指定同时为要服务的消息驱动型 Bean 加载到 Java 消息服务会话的消息最大数目。默认值为 1。

 

ior-security-config

 

零或一个

 

指定 IOR 的安全信息。

 

is-read-only-bean

 

零或一个

 

指定此 Bean 为只读 Bean 的标志。

 

refresh-period-in-seconds

 

零或一个

 

指定必须从数据源刷新只读 Bean 的速率。如果速率小于或等于零,就从不刷新 Bean;如果大于零,就按指定间隔时间刷新 Bean 实例。此速率只是对容器的提示。默认值为 600。

 

commit-option

 

零或一个

 

包含具有有效值 A、B 或 C 的数据。默认值为 B。

 

gen-classes

 

零或一个

 

为一个 Bean 指定所有生成的类名称。

 

bean-pool

 

零或一个 bean-pool

 

指定 Bean 池属性。用于无状态会话 Bean、实体 Bean 和消息驱动型 Bean 池。 

 

bean-cache

 

零或一个 bean-pool

 

指定 Bean 缓存属性。仅用于有状态会话 Bean 和实体 Bean。

 

示例

<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 子元素 


子元素

必需

说明

name

 

零或一个

 

指定名称字符串。

 

unique-id

 

零或一个

 

指定唯一系统标识符。此数据在部署/重新部署时自动生成和更新。

 

ejb

 

零或一个

 

定义应用程序内单个 Enterprise Bean 的运行时属性。 

 

pm-descriptors

 

零或一个

 

描述持久性管理器描述符。必须在规定时间内使用其中一个描述符。这基本适用于 Sun ONE 应用服务器可插拔持久性管理器 API。

 

cmp-resource

 

零或一个

 

指定用于在 EJB JAR 文件中存储容器管理持久性  (CMP) Bean 的数据库。

 

示例

<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

is-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 子元素  


子元素

必需

说明

security-role-mapping

 

零或多个

 

把相应的 J2EE XML 文件中的角色映射到某个用户或组。

 

enterprise-beans

 

仅一个

 

描述应用程序中 EJB JAR 文件的所有运行时属性。

 

unique-id

指定唯一系统标识符。此数据在部署/重新部署时自动生成和更新。开发者在部署之后不要更改这些值。 

子元素

角色映射元素

角色映射元素将一个角色就像在 EJB JAR role-name 实体中指定一样映射到某个针对环境的用户或组。如果映射到一个用户,该用户必须是当前领域内存在的具体用户,该用户可以使用当前身份验证方法登录到服务器。如果映射到组,领域必须支持组,而且该组必须是当前领域内存在的一个具体组。为了有用,该领域中必须至少有一个属于该组的用户。

角色映射元素如下:

group-name

指定组名称。

子元素

principal

定义在平台指定用户名的节点。

子元素

下表描述 principal 元素的子元素。

   principal 子元素 


子元素

必需

说明

name

 

仅一个

 

指定用户名。

 

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 子元素  


子元素

必需

说明

role-name

 

仅一个

 

从所映射的 ejb-jar.xml 文件指定 role-name

 

principal-name

 

至少需要一个 principal-namegroup-name

 

在指定 run-as 角色的 Bean 中指定主(用户)名称。

 

group-name

 

至少需要一个 principal-namegroup-name

 

指定组名称。

 

server-name

指定部署应用程序的服务器的名称。

子元素

引用元素

引用元素如下:

ejb-ref

把绝对 jndi-name 名称映射到相应的 J2EE XML 文件中的 ejb-ref 元素。ejb-ref 元素用于对于某个 EJB 主页的引用的声明。

适用于会话 Bean 或实体 Bean。.

子元素

下表描述 ejb-ref 元素的子元素。

   ejb-ref 子元素  


子元素

必需

说明

ejb-ref-name

 

仅一个

 

在相应的 J2EE EJB JAR 文件 ejb-ref 项中指定 ejb-ref-name

 

jndi-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 语义。



当某个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-nameres-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 子元素  


子元素

必需

说明

resource-env-ref-name

 

仅一个

 

在相应的 J2EE ejb-jar.xml 文件 resource-env-ref 项中指定 resource-env-ref-name

 

jndi-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-nameresource-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-nameresource-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 子元素  


子元素

必需

说明

res-ref-name

 

仅一个

 

在相应的 J2EE ejb-jar.xml 文件 resource-ref 项中指定 res-ref-name。 

jndi-name

 

仅一个

 

指定绝对 jndi-name

 

default-resource-principal

 

零或一个

 

指定对于资源管理器的默认登录设置(名称/密码)。

 

示例

<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

 

仅一个

 

指定绝对 jndi-name.

 

default-resource-principal

 

零或一个

 

指定到资源管理器的默认登录设置(名称/密码)。

 

安全元素

本节讲述与身份验证、授权和一般安全关联的元素。其中包括以下元素:

as-context

指定将用来验证客户端身份的身份验证机制。如果指定,它将是 USERNAME_PASSWORD

子元素

下表描述 as-context 元素的子元素。

   as-context 子元素  


子元素

必需

说明

auth-method

 

仅一个

 

指定身份验证方法。唯一支持的值为 USERNAME_PASSWORD

 

realm

 

仅一个

 

指定验证用户身份的领域。

 

required

 

仅一个

 

指定是否必须将指定的身份验证方法用于客户端身份验证。如果是这样,必需在 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 子元素  


子元素

必需

说明

name

 

仅一个

 

指定用于登录到资源管理器的默认资源主名称。

 

password

 

仅一个

 

指定默认资源主名称的密码。

 

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 子元素  


子元素

必需

说明

transport-config

 

零或一个

 

指定传输的安全信息。

 

as-context

 

零或一个

 

描述将用于对客户端进行身份验证的身份验证机制。如果指定,它将是 USERNAME_PASSWORD

 

sas-context

 

零或一个

 

描述 sas-context 字段。

 

name

指定身份。

子元素

password

指定安全机制完成身份验证所需的密码。

子元素

realm

指定验证用户身份的领域。

子元素

required

指定是否必须将指定的身份验证方法用于客户端身份验证。如果是这样,则将在 as-context 的 target_requires 字段中设置 EstablishTrustInClient 位。值为 True(真)或 False(假)。

子元素

sas-context

描述 sas-context 字段。

子元素

下表描述 sas-context 元素的子元素。

   sas-context 子元素  


子元素

必需

说明

caller-propagation

 

仅一个

 

指定目标是否将接受传播的调用者身份。值为 NONE、SUPPORTED 或 REQUIRED。

 

transport-config

指定安全传输信息。

子元素

下表描述 transport-config 元素的子元素。

   transport-config 子元素  


子元素

必需

说明

integrity

 

仅一个

 

指定目标是否支持保护完整性的消息。值为 NONE、SUPPORTED 或 REQUIRED。

 

confidentiality

 

仅一个

 

指定目标是否支持保护隐私的消息。值为 NONE、SUPPORTED 或 REQUIRED。

 

establish-trust-in-target

 

仅一个

 

指定目标是否能够针对某个客户端进行身份验证。值为 NONE、SUPPORTED 或 REQUIRED。

 

establish-trust-in-client

 

仅一个

 

指定目标是否能够对某个客户端进行身份验证。值为 NONE、SUPPORTED 或 REQUIRED。

 

持久性元素

本节描述与容器管理持久性 (CMP)、持久性管理器以及持久性供应商关联的元素。 有关使用这些元素的信息,请参阅“使用容器管理持久性”

包括下面的元素:

cmp

描述用于 EJB1.1 和 EJB2.0 Bean 的容器管理持久性 (CMP) 实体 Bean 对象的运行时信息。 这是描述一个 Bean 的映射信息的文件的指针。

子元素

下表描述 cmp 元素的子元素。

   cmp 子元素 


子元素

必需

说明

mapping-properties

 

仅一个

 

包含指定持久性供应商的特定对象对关系 (O/R) 数据库映射文件的位置的数据。

 

concrete-impl

 

仅一个

 

包含指定持久性供应商的特定具体类名称的位置的数据。

 

pc-class

 

零或一个

 

包含指定持久性供应商的特定类的位置的数据。

 

is-one-one-cmp

 

零或一个

 

包含容器管理持久性 (CMP) 1.1 的布尔细节。用于将 CMP 1.1 与旧描述符联系在一起。

 

one-one-finders

 

零或一个

 

描述容器管理持久性 (CMP) 1.1 的查找程序。 

cmp-resource

指定用来在一个 EJB JAR 文件中存储容器管理持久性 (CMP) Bean 的数据库。

子元素

下表描述 cmp-resource 元素的子元素。

   cmp-resource 子元素 


子元素

必需

说明

jndi-name

 

仅一个

 

指定绝对 jndi-name

 

default-resource-principall

 

零或一个

 

指定资源引用的默认运行时绑定。

 

concrete-impl

指定持久性供应商的某个具体类名称的位置。

子元素

finder

使用方法名和查询描述容器管理持久性 1.1 的查找程序。

子元素

 下表描述 finder 元素的子元素。

   finder 子元素  


子元素

必需

说明

method-name

 

仅一个

 

指定查询字段的方法名。

 

query-params

 

仅一个

 

可选数据,指定容器管理持久性 (CMP) 1.1 查找程序的查询参数。

 

query-filter

 

仅一个

 

指定容器管理持久性 (CMP) 1.1 查找程序的查询筛选器。

 

query-variables

 

仅一个

 

可选数据,指定容器管理持久性 (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 子元素  


子元素

必需

说明

finder

 

必须有一个或多个

 

使用一个方法名和查询描述容器管理持久性 (CMP) 1.1。

 

pc-class

指定持久性供应商的具体类。

子元素

pm-class-generator

指定要使用的供应商特有具体类生成器。 这是供应商特有的类的名称。

子元素

pm-config

指定要使用的供应商特有配置文件。

子元素

pm-descriptor

描述与实体 Bean 关联的持久性管理器的属性。

子元素

下表描述 pm-descriptor 元素的子元素。

   pm-descriptor 子元素  


子元素

必需

说明

pm-identifier

 

仅一个

 

指定提供持久性管理器实施的供应商。例如,这可能是 Sun ONE 应用服务器容器管理持久性或第三方供应商。

 

pm-version

 

仅一个

 

指定要使用持久性管理器供应商产品的哪个版本。

 

pm-config

 

零或一个

 

指定要使用的供应商特有的配置文件。 

 

pm-config

 

零或一个

 

指定要生成哪个供应商特有具体类生成器。这是供应商特有的类的名称。

 

pm-mapping-factory

 

零或一个

 

指定要使用哪个供应商特有的映射工厂。这是供应商特有的类的名称。 

 

pm-descriptors

描述持久性管理器描述符。必须在规定时间内使用其中一个描述符。这基本上适用于 Sun ONE 应用服务器可插拔持久性管理器 API。

子元素

下表描述 pm-descriptors 元素的子元素。左列列出子元素名称,中间列表示要求规则,而右列描述元素的功能。

   pm-descriptors 子元素  


子元素

必需

说明

pm-descriptor

 

一或多个

 

描述与实体 Bean 关联的持久性管理器的属性。

 

pm-inuse

 

仅一个

 

指定是否必须使用此特定持久性管理器。 

 

pm-identifier

指定提供持久性管理器实施的供应商。例如,这可能是 Sun ONE 应用服务器容器管理持久性或第三方供应商。

子元素

pm-inuse

指定是否必须使用此特定持久性管理器。

子元素

下表描述 pm-inuse 元素的子元素。

   pm-insue 子元素  


子元素

必需

说明

pm-identifier

 

仅一个

 

包含指定提供持久性管理器实施的供应商。例如,这可以是 Sun ONE 应用服务器容器管理持久性或第三方供应商。

 

pm-version

 

仅一个

 

包含指定要使用哪个版本的持久性管理器供应商产品。 

 

pm-mapping-factory

指定要使用哪个供应商特有的映射工厂。这与供应商特有的类名称相同。

子元素

pm-version

指定要使用哪个版本的持久性管理器供应商产品。

子元素

query-filter

指定容器管理持久性 1.1 查找程序的查询筛选器。可选。

子元素

query-params

指定容器管理持久性 1.1 查找程序的查询参数。

子元素

query-variables

指定容器管理持久性 1.1 查找程序的查询表达式中的变量。可选。

子元素

无合用和缓存元素

本节讲述与缓存、超时和 EJB 池关联的元素。这些元素用于控制内存使用和性能调整。有关详细信息,请参阅 Sun ONE 应用服务器产品性能调整和大小调整指南。

下面讨论以下元素:

bean-cache

指定实体 Bean 缓存属性。用于实体 Bean 和有状态会话 Bean。 

子元素

下表描述 bean-cache 元素的子元素。

   bean-cache 子元素  


子元素

必需

说明

max-cache-size

 

零或一个

 

指定缓存中允许的 Bean 最大数目。

 

is-cache-overflow-allowed

 

零或一个

 

不支持。

 

cache-idle-timeout-in-seconds

 

零或一个

 

指定允许有状态会话 Bean 或实体 Bean 在钝化之前在缓存之中闲置的最长时间。默认值为 10 分钟(600 秒)。

 

removal-timeout-in-seconds

 

零或一个

 

指定被删除之前 Bean 保留的时间数量。如果 removal-timeout-in-seconds 小于 idle-timeout,就在不钝化的情况下,删除该 Bean。

 

resize-quantity

 

零或一个

 

指定池为空时要创建的 Bean 数目(取决于 max-pool-size 限制)。值从 0 到 MAX_INTEGER。

 

victim-selection-policy

 

零或一个

 

指定容器选取牺牲者时必须使用的算法。仅适用于有状态会话 Bean。

 

示例

<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 子元素  


子元素

必需

说明

steady-pool-size

 

零或一个

 

指定池中保留的 Bean 的最初和最小数目。默认值为 32。

 

resize-quantity

 

零或一个

 

指定池为空时要创建的 Bean 的数目(取决于 max-pool-size 限制)。值从 0 到 MAX_INTEGER。

 

max-pool-size

 

零或一个

 

指定池中的 Bean 的最大数目,值从 0 到 MAX_INTEGER。 默认值为 server.xml 或 60。

 

max-wait-time-in-millis

 

零或一个

 

不支持。

 

pool-idle-timeout-in-seconds

 

零或一个

 

指定池中允许闲置的 Bean 的最大时间。此时间过后,就会删除 Bean。这是对服务器的提示。默认时间为 600 秒(10 秒)。

 

示例

<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 实例的数目:

值从 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。 



注意

如果把 steady-pool-size 设置为大于 0 的值,就在服务器启动时创建 Bean。如果某个 Bean 依赖于在服务器启动(如用户的安全角色)时不可用的 setInitialContext 方法期间缓存信息,则该 Bean 应在 setInitialContext 期间丢弃 EJBException。容器处理此异常,并不实例化 Bean。如果该 Bean 耗尽此异常,则应在 sun-ejb-jar.xml 文件中把 steady-pool-size 设置为 0。



适用于无状态会话 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 子元素  


子元素

必需

说明

remote-impl

 

零或一个

 

指定生成的 EJBObject impl 类的完全合格的类名称。

 

local-impl

 

零或一个

 

指定生成的 EJBLocalObject impl 类的完全合格的类名称。

 

remote-home-impl

 

零或一个

 

指定生成的 EJBHome impl 类的完全合格的类名称。

 

local-home-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>


上一部分 | 目录 | 索引 | 下一部分
Copyright 2002 Sun Microsystems, Inc. All rights reserved.