Мы развернули commonj workmanager rar в jboss EAP 6.4.9.GA и jdk 1.7. Мы используем ссылку 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);
Что я вижу, так это то, что исполнитель задач не ждет завершения задач, и на следующем шаге мы пытаемся получить результат из рабочего объекта, и он выдает исключение
Что вызывает недоумение, так это то, что одна и та же настройка работает на локальном сервере с сервером jboss 6.2 и jdk 1.7.
Не подскажете, что может быть не так?
Я также добавил WorkListener
taskExecutor.schedule(work,rtWorkListener);
Я получаю журналы в Listener для workAccepted и WorkStarted. Workmanager deos не ждет завершения потока. Есть ли какой-либо альтернативный способ реализовать ожидание завершения потоков с помощью Listener?