6

我想使用 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,但如果可能的话,我更愿意使用非专有的方法。

4

2 回答 2

8

首先,您将在Timer and Work Manager API (CommonJ) Programmer's Guide中找到 CommonJ 的文档,它是由BEA Oracle 和 IBM开发的 Timer and 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>元素的描述和使用工作管理器优化计划工作

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

我没有任何其他建议(而且,只要这个实现遵循标准,我不介意使用它)。

于 2009-09-24T23:55:08.180 回答
0

Weblogic 文档将回答您的问题。 使用工作管理器优化计划工作

于 2015-02-27T17:54:22.707 回答