commonj workmanager в потоках jboss не ожидает завершения
Мы развернули commonj workmanager rar в jboss EAP 6.4.9.GA и jdk 1.7. Мы используем ссылку на workmanager для создания нескольких потоков в случае нескольких загрузок файлов. У нас есть конфигурация по умолчанию для workmanager со значением 50 для максимальных потоков, основных потоков, длины очереди. Мы определили зависимость в весеннем 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);
Я получаю журналы в Listener для workAccepted и WorkStarted. Рабочий менеджер не ожидает завершения потока. Есть ли альтернативный способ реализовать ожидание завершения потоков с использованием Listener?
1 ответ
Я попытался переустановить commonj workmanager на сервере jboss, и это сработало. Это могла быть старая версия workmanager на сервере. Но поведение было странным.