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>
Другие вопросы по тегам