Spring WorkManagerTaskExecutor无法在websphere中初始化

Spring WorkManagerTaskExecutor无法在websphere中初始化,spring,websphere,workmanagers,commonj,Spring,Websphere,Workmanagers,Commonj,我想使用Websphere work manager在jee上下文中执行异步作业,但在创建spring WorkManager时遇到问题 bean定义: <bean id="taskExecutor" class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor"> <property name="workManagerName" value="wm/default" /> </b

我想使用Websphere work manager在jee上下文中执行异步作业,但在创建spring WorkManager时遇到问题

bean定义:

<bean id="taskExecutor" class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">     <property name="workManagerName" value="wm/default" /> </bean>

我在websphere帮助中找到了这个定义。但问题是这一切都以noClassDefFound结束。我注意到自2.x.x版以来,spring上下文中缺少了pckg
org.springframework.scheduling.commonj

是否将其替换为
org.springframework.jca.work.WorkManagerTaskExecutor

当我使用另一个spring类时,我得到一个错误:

原因:org.springframework.jndi.typemistchnamingexception: 类型为[class com.ibm.ws.asynchbeans.WorkManagerImpl]的对象 JNDI位置可用[wm/default]不可分配给 [javax.resource.spi.work.WorkManager]

那么这里有什么交易?thx

was-7.0.0.23
spring-3.1.2

org.springframework.scheduling.commonj.WorkManagerTaskExecutor
驻留在
spring-context-support-3.1.2.RELEASE.jar
org.springframework.scheduling.commonj.WorkManagerTaskExecutor
驻留在
spring-context-support-3.1.2.RELEASE.jar

配置成功使用部署中
applicationContext service.xml
中的
javax.resource.spi.work.WorkManager


在我的例子中,bean注入部署失败
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>


在部署中的
applicationContext service.xml
中的
javax.resource.spi.work.WorkManager
配置成功


在我的例子中,bean注入部署失败
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>

在我们的场景中,我们由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>

在我们的场景中,我们由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>


据我所知,该类仍然存在于
spring上下文支持
jar中。据我所知,该类仍然存在于
spring上下文支持
jar中。我的错,我在maven中使用了spring上下文。我的错,我在maven中使用了spring上下文。
javax.resource.spi.work.work.WorkManager
是一个接口。因为它是一个接口,所以没有成功。相反,我们可以使用
org.springframework.jca.work.jboss.JBossWorkManagerTaskExecutor
,它在
Spring 2.5
以后的版本中受支持。在我的例子中,它是jboss。。。。摘自Spring2.5Javadoc。。。。注意:在撰写本文时,
CommonJ WorkManager
工具仅在IBM
WebSphere 6.0+
和BEA
WebLogic 9.0+
上受支持,尽管它是应用服务器的关键API。(在
WebSphere5.1Enterprise
上有一个类似的工具,我们将在下面讨论。)在JBoss和GlassFish上,可以通过JCA WorkManager获得一个类似的工具。请参阅
JBossWorkManagerTaskExecutor
GlassFishWorkManagerTaskExecutor类
,这些类直接等效于此CommonJ适配器类。。。我发现这一点:在即将推出的兼容EE7的WebLogic和WebSphere版本中,应该首选DefaultManagedTaskExecutor,遵循JavaEE7中的JSR-236支持。
javax.resource.spi.work.WorkManager
是一个接口。因为它是一个接口,所以没有成功。相反,我们可以使用
org.springframework.jca.work.jboss.JBossWorkManagerTaskExecutor
,它在
Spring 2.5
以后的版本中受支持。在我的例子中,它是jboss。。。。摘自Spring2.5Javadoc。。。。注意:在撰写本文时,
CommonJ WorkManager
工具仅在IBM
WebSphere 6.0+
和BEA
WebLogic 9.0+
上受支持,尽管它是应用服务器的关键API。(在
WebSphere5.1Enterprise
上有一个类似的工具,我们将在下面讨论。)在JBoss和GlassFish上,可以通过JCA WorkManager获得一个类似的工具。请参阅
JBossWorkManagerTaskExecutor
GlassFishWorkManagerTaskExecutor类
,这些类直接等效于此CommonJ适配器类。。。我发现这一点:在即将推出的兼容EE7的WebLogic和WebSphere版本中,应该首选DefaultManagedTaskExecutor,这是在JavaEE7中支持JSR-236之后。