0

我们在 jboss EAP 6.4.9.GA 和 jdk 1.7 中部署了 commonj workmanager rar。我们正在使用 workmanager 引用来创建多个线程以防多个文件上传。我们为 workmanager 设置了默认配置,最大线程、核心线程、队列长度的值为 50。我们在spring xml中定义了依赖为

<bean id="taskExecutor" 
class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
<property name="workManagerName" value="java:jboss/wm/default-work-manager" />
<property name="resourceRef" value="false"/>
</bean>

在 Invoker 类中,提交工作

@Component
 public class RealtimeServiceInvoker 
 @Autowired
private WorkManagerTaskExecutor taskExecutor;
public Response execute(..)....
for(FileBean fileBean:fileList){
            SampleWork work = new SampleWork ();
            work.setFileBean(fileBean);
            colWorkItems.add(taskExecutor.schedule(work));
            requestList.add(work);
        }

        taskExecutor.waitForAll(colWorkItems, WorkManager.INDEFINITE);

我看到的是 taskexecutor 没有等待任务完成,在下一步中,我们试图从 Work 对象中获取结果,它正在抛出异常

令人费解的是,在本地服务器上使用 jboss 6.2 服务器和 jdk 1.7 的设置相同。

你能告诉我可能出了什么问题吗?

我还添加了 WorkListener

taskExecutor.schedule(work,rtWorkListener);

我在监听器中获取 workAccepted 和 WorkStarted 的日志。workmanager deos 不等待线程完成。如果有任何替代方法可以使用监听器来实现等待线程完成?

4

1 回答 1

0

我试图在 jboss 服务器中重新安装 commonj workmanager 并且它工作正常。它可能是服务器中的旧版本 workmanager。但行为很奇怪。

于 2017-03-20T14:52:44.710 回答