Я пытаюсь заставить транзакции XA работать в приложении Spring v3 внутри WebSphere v7.
Мой контекст приложения гласит:
<bean id="jmsConnectionFactory"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jms/MQConnectionFactory"/>
<property name="resourceRef" value="true"/>
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
</bean>
<jee:jndi-lookup id="myDB" jndi-name="jdbc/myDB"/>
<bean id="txManager"
class="org.springframework.transaction.jta.WebSphereUowTransactionManager" />
<tx:annotation-driven transaction-manager="txManager"/>
Я ссылаюсь на эту статью с надписью mix в UOW txn manager, и все будет в порядке.Но это не работает таким образом.Вместо этого в следующем коде сообщение деструктивно читается и не откатывается при возникновении исключения.
Транзакционная логика (в scala):
@Transactional(rollbackFor = Array(classOf[Throwable]))
def processNextMessage(category: String) = {
val maybeMessage = readNextMessage(category) // <- this is a destructive read
for (message <- maybeMessage) {
// this is temporary code for testing
throw new RuntimeException("blaaaaaah")
// end temporary code
// sendToQueue(message, queue)
// writeToMessageStore(message)
}
}
Кто-нибудь может посоветовать, как я могу использовать JS-менеджер транзакций WebSphere со Spring?