我们已经在jboss EAP 6.4.9.GA和jdk 1.7中部署了commonj workmanager rar。我们使用工作管理器参考来创建多个线程,以防多个文件uploads.We具有默认的工作管理器配置,即最大线程数、核心线程数、队列长度的值为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);我看到的是任务执行器没有等待任务完成,在下一步中,我们试图从Work对象中获取结果,但它抛出了异常
令人费解的是,jboss 6.2服务器和jdk 1.7在本地服务器上也可以使用相同的设置。
你能告诉我可能出了什么问题吗?
我还添加了WorkListener
taskExecutor.schedule(work,rtWorkListener);我在workAccepted和WorkStarted的侦听器中获取日志。工作管理器不等待线程完成侦听器有没有替代的方法来实现等待线程完成使用complete.If?
发布于 2017-03-20 22:52:45
我尝试在jboss服务器中重新安装commonj workmanager,它的worked.It可能是服务器中旧版本的workmanager。但是他的行为很奇怪。
https://stackoverflow.com/questions/42394114
复制相似问题