使用脚本编制来配置 EJB 异步方法
使用 wsadmin 脚本编制来配置 Enterprise JavaBeans (EJB) 异步方法。
开始之前
关于此任务
过程
- 通过使用 Jython 脚本语言,启动 wsadmin 脚本编制工具。
- 确定 EJBAsync 配置对象的必须更新的属性。 可以更新 EJBAsync 配置对象的下列属性:
表 1. EJBAsync 配置对象的属性. 此表描述 EJBAsync 配置对象的属性。 属性 描述 maxThreads 指定异步 EJB 方法执行过程中使用的最大线程数。 缺省值为 5。
workReqQSize 指定工作请求队列的大小。工作请求队列是一个缓冲区,它存放已请求的异步方法,直到有线程来运行这些方法为止。 maxThreads 与 workReqQSize 属性之和是允许的进行中的方法请求总数。
例如,如果 maxThreads 已设置为 5 个线程,并且 workReqQSize 已设置为 50,那么允许的进行中的方法请求总数是 55。
缺省值是 0,表示队列大小由运行时环境进行管理。运行时当前使用 20 与 maxThreads 之间的较大者。
workReqQFullAction 指定线程池用尽并且工作请求队列已满时执行的操作。 如果设置为 1,那么将发生异常,而不是等待某个线程或队列中的某个位置变为可用。
如果设置为 0,那么正在请求执行异步方法的线程将等待,直到某个线程或队列中的某个位置变为可用为止。
缺省值是 0。
customWorkManagerJNDIName 指定用于在名称空间中查找已定义的定制工作管理器的 Java™ 命名和目录接口 (JNDI) 名称。 缺省值是 NULL。
useCustomDefinedWM 指定是使用客户定义的工作管理器实例还是使用缺省内部工作管理器实例。 当 useCustomDefinedWM 属性已设置为 true 时,那么这表示将使用定制工作管理器实例。在这种情况下,必须设置 customWorkManagerJNDIName 属性,并且将忽略所有其他属性。
当 useCustomDefinedWM 属性已设置为 False 时,那么将使用缺省内部工作管理器实例。在这种情况下,将忽略 customWorkManagerJNDIName 属性,并且使用所有其他属性来帮助配置缺省工作管理器实例。
缺省值为 false。
futureTimeout 指定服务器端 future 对象可用的时间量(以秒计),该对象是因为运行“启动并返回”异步方法而创建的。服务器端 future 对象在您调用 get() 方法之后无效,并且会对远程对象返回一个值。要避免内存泄漏,必须对 future 对象调用 get() 方法或指定正的且非零的将来持续时间值。 为零的将来持续时间值表示 future 对象永远不会超时。
缺省值是 86400,它表示 future 对象在 24 小时之后到期并由应用程序服务器清除,从而不再可用。
如果在 future 对象到期之后调用 get() 方法,那么将抛出 org.omg.CORBA.OBJECT_NOT_EXIST 异常。
支持的配置: 此值仅适用于使用远程业务接口调用企业 Bean 的客户机;此值未用于本地业务接口或非接口视图。完成异步工作后,服务器会在对服务器端 future 对象指定的持续时间内设置一个警报。激活该警报时,服务器将释放所有与 future 对象相关联的资源,从而使该对象不可用于客户机。如果客户机在持续时间量之前对 future 对象调用 get() 方法,那么将取消该警报并释放所有与 future 对象相关联的资源。sptcfg
支持的配置: 此属性可能会影响服务器上 future 对象的数量。使用 AsynchFutureObjectCount PMI 统计信息来确定服务器上打开 FutureObjects 的数量,它可帮助您确定应用程序是否累积 future 对象而不针对这些对象呼叫 get() 方法。有关更多信息,请参阅主题“企业 Bean 计数器”。sptcfg
- 获取对正确 EJBAsync 配置对象的引用并将其存储在变量中。
使用 Jacl:
set async [$AdminConfig list EJBAsync]
使用 Jython:
async = AdminConfig.list('EJBAsync')
如果具有多服务器环境,那么将返回多个 EJBAsync 配置对象。以编程方式循环检查该列表并选择与您必须更新的服务器对应的 EJBAsync 配置对象。
在多服务器环境中,作为以编程方式循环检查 EJBAsync 对象列表的替代方法,您可以手动选择正确的 EJBAsync 对象,复制并将其粘贴到您的变量中。
例如,以下是 AdminConfig list 命令的输出:
(cells/myNode04Cell/nodes/myCellManager01/servers/dmgr|server.xml#EJBAsync_1)(cells/myNode04Cell/nodes/myNode04/servers/server1|server.xml#EJBAsync_1247498700906)
您可以复制所需 EJBAsync 对象的引用并将其粘贴到您的变量中。
使用 Jacl:
set async "(cells/myNode04Cell/nodes/myNode04/servers/server1|server.xml#EJBAsync_1247498700906)"
使用 Jython:
async = "(cells/myNode04Cell/nodes/myNode04/servers/server1|server.xml#EJBAsync_1247498700906)"
- 更新 EJBAsync 配置对象的属性。
使用 AdminConfig modify 命令来更新 EJBAsync 配置对象的属性。指定您在先前步骤中获取的 EJBAsync 引用以及属性名和属性值组合的列表,作为该命令的输入。
要将最大线程数设置为 10 个线程、将队列大小设置为 15 以及将 futureTimeout 设置为 3600 秒:
使用 Jacl:
set update "{maxThreads 10} {workReqQSize 15} {futureTimeout 3600}" $AdminConfig modify $async $update
使用 Jython:
AdminConfig.modify(async, '[ [maxThreads "10"] [workReqQSize "15"] [futureTimeout "3600"] ]')
- 保存配置更改。
使用 Jython:
AdminConfig.save()
使用 Jacl:
$AdminConfig save
- 仅在 Network Deployment 环境中使节点同步。
使用 Jacl:
set sync1 [$AdminControl completeObjectName type=NodeSync,node=<your node>,*] $AdminControl invoke $sync1 sync
使用 Jython:
sync1 = AdminControl.completeObjectName('type=NodeSync,node=<your node>,*') AdminControl.invoke(sync1, 'sync')
在连接至服务器时,必须运行这些示例中的节点同步过程。
结果


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=txml_ejbAsynch_config
文件名:txml_ejbAsynch_config.html