1

我需要从 GlassFish 服务器中的 servlet 启动后台任务,并且我认为 WorkManager 是一种与 Java EE 兼容的方式来实现这一点。

以前在 Glassfish v2 中它工作得相当好:我使用了静态方法 WorkManagerFactory.createWorkManager(String poolName),它给了我一个 WorkManager,我可以用它来启动一个带有 startWork(Work) 的工作。

在 GlassFish v3.0.1 中,API 发生了变化:WorkManagerFatory 中不再有静态 createWorkManager() 方法,并且 createWorkManager 采用 2 个额外参数:资源适配器名称和 ClassLoader。我很困惑:我现在应该如何获得 WorkManager?

我尝试自己实例化 WorkManagerFactory 并调用 createWorkManager() 但出现以下异常:

在 com.sun.enterprise.connectors.work.WorkManagerFactory.getConnectorRuntime(WorkManagerFactory.java:202) 在 com.sun.enterprise.connectors 的资源适配器 [ jmsra ] java.lang.NullPointerException 的工作管理器实例化期间发生错误.work.WorkManagerFactory.createWorkManager(WorkManagerFactory.java:122)

至少可以说,关于这个主题的可用文档非常少......所以任何帮助都将不胜感激。

4

1 回答 1

1

对于它的价值,我最终使用了 Spring 的 TaskExecutor API,它的优点是让我可以选择要使用的实现。奇迹般有效。

该界面与 WorkManager 足够接近,因此我几乎不需要对代码进行更改。

于 2010-12-10T12:13:26.093 回答