Spring WorkManagerTaskExecutor не может инициализироваться в веб-сфере
Я хочу использовать менеджер работ Websphere для выполнения асинхронных заданий в контексте jee, но у меня проблема с созданием весеннего WorkManager.
определение бина:
<bean id="taskExecutor" class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor"> <property name="workManagerName" value="wm/default" /> </bean>
это определение я нашел в справке websphere. Но проблема в том, что это заканчивается noClassDefFound. Я заметил pckg org.springframework.scheduling.commonj
отсутствует в весеннем контексте с версии 2.xx
Это заменено org.springframework.jca.work.WorkManagerTaskExecutor
?
когда я использую этот другой весенний класс, я получаю ошибку:
Вызывается: org.springframework.jndi.TypeMismatchNamingException: объект типа [class com.ibm.ws.asynchbeans.WorkManagerImpl], доступный в расположении JNDI [wm/default], нельзя назначить для [javax.resource.spi.work.WorkManager]
так что тут делать? Спасибо
было - 7.0.0.23, весна - 3.1.2
3 ответа
Учебный класс org.springframework.scheduling.commonj.WorkManagerTaskExecutor
проживает в spring-context-support-3.1.2.RELEASE.jar
В нашем сценарии мы управляли этим с помощью ThreadPoolTaskExecutor вместо WorkManagerTaskExecutor
Вот конфигурация, которая входит в ApplicationContext.xml
<!--
<bean id="rtSenderTaskExecutor"
class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
<property name="workManagerName">
<value>${org.quartz.threadPool.jndi}</value>
</property>
</bean> -->
<!-- Local Thread Pool -->
<bean id="rtSenderTaskExecutor"
class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="${org.quartz.threadPool.corePoolSize}" />
<property name="maxPoolSize" value="${org.quartz.threadPool.maxPoolSize}" />
<property name="queueCapacity" value="${org.quartz.threadPool.queueCapacity}" />
<property name="keepAliveSeconds" value="${org.quartz.threadPool.keepAliveSeconds}"></property>
</bean>
Конфигурация успешна с javax.resource.spi.work.WorkManager
в applicationContext-service.xml
в развертывании.....
В моем случае развертывание завершается неудачно для внедрения бина org.springframework.scheduling.commonj.WorkManagerTaskExecutor
так как он не может принять WorkManager JNDI, настроенный на сервере приложений.... Я только что заменил javax.resource.spi.work.WorkManager
, И пока это успешное развертывание.
Я еще не видел, приложение работает нормально с ним.
<bean id="taskExecutor" class="javax.resource.spi.work.WorkManager">
<property name="workManagerName" value="wm/default" />
</bean>