如何在WebLogic 10.3中配置WorkManagers?

hal*_*ave 6 concurrency weblogic java-ee weblogic-10.x

我想使用WorkManager在WebLogic 10.3应用服务器上安排一些并行作业.

http://java.sun.com/javaee/5/docs/api/javax/resource/spi/work/WorkManager.html

我发现Oracle/BEA文档有点碎片化且难以理解,并且它没有很好的例子来使用EJB 3.0中的WorkManagers.

具体来说,我想知道:

1)我需要在部署描述符(ejb-jar.xml和朋友)中放入什么(如果有的话)?

2)我想使用@Resource注释将WorkManager注入我的EJB 3会话bean.我使用什么"名称"作为资源?

3)如何配置WorkManager的线程数和其他参数.

我的理解是WebLogic上的底层实现是CommonJ,但如果可能的话,我更愿意使用非专有方法.

Pas*_*ent 8

首先,您将在Timer和Work Manager API(CommonJ)程序员指南中找到CommonJ的文档,这是BEA Oracle和IBM 开发的Timer和Work Manager API的实现.它们提供了工作管理器示例,但未在本文档中注入.

1)我需要在部署描述符(ejb-jar.xml和朋友)中放入什么(如果有的话)?

根据工作管理器部署部分:

工作管理器通过适当的部署描述符中的resource-ref在服务器级别定义.这可以是web.xml或ejb-jar.xml等.

以下部署描述符片段演示了如何配置WorkManager:

...
<resource-ref>
   <res-ref-name>wm/MyWorkManager</res-ref-name>
   <res-type>commonj.work.WorkManager</res-type>
   <res-auth>Container</res-auth>
   <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
...
Run Code Online (Sandbox Code Playgroud)

注意: WorkManager对象的JNDI名称空间的建议前缀是java:comp/env/wm.

检查WorkManager javadocs以获取更多详细信息(例如," 在此版本的规范中将忽略res-auth和res-sharing范围.然后,EJB或servlet可以根据需要使用WorkManager. ").

2)我想使用@Resource注释将WorkManager注入我的EJB 3会话bean.我使用什么"名称"作为资源?

我会说这样的话(未经测试):

@ResourceRef(jndiName="java:comp/env/wm/MyWorkManager",
auth=ResourceRef.Auth.CONTAINER,
type="commonj.work.WorkManager",
name="MyWorkManager")
Run Code Online (Sandbox Code Playgroud)

3)如何配置WorkManager的线程数和其他参数.

有关工作管理器的详细信息,请参阅<work-manager>元素说明和使用工作管理器优化计划工作

我的理解是WebLogic上的底层实现是CommonJ,但如果可能的话,我更愿意使用非专有方法.

我没有任何其他建议(并且,只要此实现遵循标准,我不介意使用它).