使用此任务为企业 Bean 设置 ActivitySession 部署属性,以使 Bean 能够参与 ActivitySession 上下文,并支持基于 ActivitySession 的操作。
开始之前
此任务描述假定您具有包含可在 WebSphere® Application Server 中部署的应用程序企业 Bean 的企业归档 (EAR) 文件。有关更多详细信息,请参阅有关组装应用程序的主题。
关于此任务
使用组装工具来配置应用程序的部署属性。本主题描述使用 Rational® Application
Developer 来配置 ActivitySession 部署属性。这些属性是其他部署属性之外的属性,例如“装入时间”,其指定 Bean 何时从数据库装入其状态。有关组装工具中的字段的详细信息,以及有关相关联任务的帮助,请参阅 Rational Application Developer 信息。
要为企业 Bean 设置 ActivitySession 部署属性,请完成以下步骤:
过程
- 启动组装工具。 有关更多信息,请参阅 Rational Application Developer 信息。
- 创建或编辑应用程序 EAR 文件。
注: 确保将目标服务器设置为 WebSphere Application Server V7.0。
例如,要更改现有应用程序的属性,请使用导入向导将 EAR 文件导入到组装工具中。要启动“导入”向导,请执行下列操作:
- 单击。
- 单击下一步,然后选择 EAR 文件。
- 在“目标服务器”字段中,选择 WebSphere
Application Server V7.0。
- 单击完成。
- 在 Java™ EE
透视图的“项目资源管理器”视图中,右键单击企业 Bean 实例的 EJB 模块,然后单击。 属性窗格中显示企业 Bean 实例的属性对话笔记本。
- 在属性窗格中,选择 Bean 选项卡。
- 选择您要更改的 Bean。
- 在“WebSphere 扩展”部分中,Bean 高速缓存下,将激活于属性设置为 ActivitySession:
按如下所示激活和钝化使用此激活策略的企业 Bean:
- 在 ActivitySession 边界上,如果激活时存在 ActivitySession 上下文。
- 在事务边界上,假定激活时存在事务上下文,但不存在 ActivitySession 上下文。
- 否则,在调用边界上。
- 在“局部事务”组框中,将边界属性设置为 ActivitySession: 当使用此设置时,局部事务必须在启动它的任何 ActivitySession 的范围中解析,或者如果不存在 ActivitySession 上下文,那么在启动它的同一 Bean 方法中解析。
ActivitySession 的设置不适用于任何
EJB Home 方法,例如 create 或 finder 方法。EJB Home 方法不能参与 ActivitySession,因为此状态可能会导致死锁。
- 对于实体 Bean 或会话 Bean,设置每个 EJB 方法的 ActivitySession 属性。
- 在属性窗格中选择 ActivitySession 选项卡。
- 在配置 ActivitySession 策略字段中,单击添加或编辑为企业 Bean 的方法设置 ActivitySession 类型属性。这指定将方法调用委托给企业 Bean 的业务方法时,容器必须如何管理 ActivitySession 边界。
- 从不
- 容器在没有 ActivitySession 上下文的情况下调用 Bean 方法。
- 如果客户机在 ActivitySession 上下文中调用 Bean 方法,那么容器抛出 InvalidActivityException 异常,其是 javax.rmi.RemoteException。
- 如果客户机从 ActivitySession 上下文外调用 Bean 方法,那么容器的作用与设置 Not Supported 值相同。客户机在没有 ActivitySession 上下文的情况下必须调用此方法。
- 必需
- 容器总是在与客户机关联的 ActivitySession 上下文中调用 Bean 方法。如果客户机尝试在没有 ActivitySession 上下文的情况下调用 Bean 方法,容器会向客户机抛出 ActivityRequiredException 异常。ActivitySession 上下文被传递给企业 Bean 方法访问的任何 EJB 对象或资源。
ActivityRequiredException 异常是 javax.rmi.RemoteException。
- 需要新建
- 无论客户机是在 ActivitySession 上下文中还是在 ActivitySession 上下文外调用方法,容器总是在新的 ActivitySession 上下文中调用 Bean 方法。新的 ActivitySession 上下文被传递给此 Bean 方法使用的任何企业 Bean 对象或资源。
在方法持续时间内暂挂任何收到的 ActivitySession 上下文,并在方法结束后继续。在方法分派前,容器启动新的 ActivitySession,并在方法结束后完成。
- 必需
- 容器在 ActivitySession 上下文内调用 Bean 方法。如果客户机从 ActivitySession 上下文中调用 Bean 方法,容器在客户机 ActivitySession 上下文中调用 Bean 方法。如果客户机从 AcitivitySession 上下文外调用 Bean 方法,容器创建新的 ActivitySession 上下文,并从此上下文中调用 Bean 方法。ActivitySession 上下文被传递给此 Bean 方法使用的任何企业 Bean 对象或资源。
- 不受支持
- 容器在没有 ActivitySession 上下文的情况下调用 Bean 方法。如果客户机从 ActivitySession 上下文中调用 Bean 方法,那么在企业 Bean 实例上调用方法之前,容器暂挂 ActivitySession 和当前线程之间的关联。稍后方法调用返回时,容器会恢复暂挂的关联。暂挂的 ActivitySession 上下文不被传递给此 Bean 方法使用的任何企业 Bean 对象或资源。
- 支持
- 如果客户机从 ActivitySession 中调用 Bean 方法,容器在 ActivitySession 上下文中调用 Bean 方法。如果客户机在没有 ActivitySession 上下文的情况下调用 Bean 方法,容器在没有 ActivitySession 上下文的情况下调用 Bean 方法。ActivitySession 上下文被传递给此 Bean 方法使用的任何企业 Bean 对象或资源。
- 单击下一步。
- 选择应用 ActivitySession 类型策略的方法。
- 单击完成。
当委托方法调用时,容器管理 ActivitySession 边界的方式取决于此处设置的 ActivitySession
种类和容器事务类型,如关于配置事务部署属性的主题中所述。有关这两个属性之间的关系的详细信息,请参阅有关 ActivitySession 与事务容器策略组合的主题。
- 保存对部署描述符所作的更改。
- 关闭部署描述符编辑器。
- 接收到提示时,单击是以保存对部署描述符所作的更改。
- 验证归档文件。 有关使用 Rational Application Developer 验证文件的更多信息,请参阅 Rational Application Developer 信息。
- 在项目的弹出菜单中,单击部署以生成 EJB 部署代码。
- 可选: 在 WebSphere Application Server 安装中测试已完成的模块。右键单击模块,单击在服务器上运行并按照显示的向导中的指示信息执行操作。
要点: 仅将在服务器上运行用于单元测试。组装工具控制 WebSphere Application Server
安装,当远程发布应用程序时,组装工具将覆盖该服务器的服务器配置文件。请勿在生产服务器上使用在服务器上运行选项。
下一步做什么
组装应用程序后,使用系统管理工具来将 EAR 文件部署到要运行该应用程序的应用程序服务器。例如,要使用管理控制台,请参阅有关部署和管理企业应用程序的主题。