我们正在将我们的项目从 Spring 2.5.6 升级到 3.2.3,将 Hibernate/JPA 升级到 4.2.3。
在用于事务管理的 spring-ds.xml 中,我们替换了下面的原始配置
<bean id="transactionManager"
class="org.springframework.transaction.jta.WebSphereUowTransactionManager">
<!-- This property is specifically required for JMS -->
<property name="transactionManager" ref="baseTransactionManager" />
</bean>
<bean id="baseTransactionManager"
class="org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean" />
<tx:annotation-driven transaction-manager="transactionManager" />
到下面,因为 WebSphereTransactionManagerFactoryBean 类在最新的 WAS 中被取代:
<bean id="transactionManager"
class="org.springframework.transaction.jta.WebSphereUowTransactionManager" />
和 JMS 消息侦听器配置如下所示:
<bean id="xxtMsgListenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="jmsxxConnectionFactory" />
<property name="destination" ref="jmsxxQueue" />
<property name="messageListener" ref="xxMessageListener" />
<property name="transactionManager" ref="transactionManager" />
<property name="taskExecutor" ref="taskExecutor" />
</bean>
使用上述配置,我们在 WAS 日志中得到以下错误:
目标队列的 JMS 消息侦听器调用程序设置失败://xxQueue?busName=zzBus' - 尝试恢复。原因:没有 JTA UserTransactionavailable - 不支持编程 PlatformTransactionManager.getTransaction 使用
升级到 spring 3.2.3 是否需要任何其他配置/属性?或配置 WebSphereUowTransactionManager 我们需要设置任何属性吗?