我想使用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,但如果可能的话,我更愿意使用非专有方法。
答案 0 :(得分:8)
首先,您将在Timer and Work Manager API (CommonJ) Programmer’s Guide中找到CommonJ的文档,这是由 BEA Oracle和IBM开发的Timer和Work Manager API的实现。它们提供了一个工作管理器示例,但未在本文档中注入。
1)我需要在部署描述符(ejb-jar.xml和朋友)中添加什么(如果有的话)?
工作经理的定义是 服务器级别通过资源引用 适当的部署描述符 这可以是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