commonj workmanager в потоках jboss, не ожидающих завершения

Мы развернули 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?


person deepakreads    schedule 22.02.2017    source источник


Ответы (1)


Я попытался переустановить рабочий менеджер commonj на сервере jboss, и это сработало. Возможно, на сервере была старая версия рабочего менеджера. Но поведение было странным.

person deepakreads    schedule 20.03.2017