如何在WebLogic 10.3中配置WorkManagers?

时间:2009-09-24 11:27:27

标签: concurrency java-ee weblogic 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,但如果可能的话,我更愿意使用非专有方法。

2 个答案:

答案 0 :(得分:8)

首先,您将在Timer and Work Manager API (CommonJ) Programmer’s Guide中找到CommonJ的文档,这是由 BEA Oracle和IBM开发的Timer和Work Manager API的实现。它们提供了一个工作管理器示例,但未在本文档中注入。

  

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

根据Work Manager Deployment部分:

  

工作经理的定义是   服务器级别通过资源引用   适当的部署描述符   这可以是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>
...
     

注意: 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")
  

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

有关工作经理的详细信息,请参阅<work-manager>元素和Using Work Managers to Optimize Scheduled Work的说明

  

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

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

答案 1 :(得分:0)

Weblogic文档将回答您的问题。 Using Work Managers to Optimize Scheduled Work