Spring, XA и WebSphere - PullRequest
       32

Spring, XA и WebSphere

0 голосов
/ 24 марта 2011

Я пытаюсь заставить транзакции 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?

1 Ответ

0 голосов
/ 19 ноября 2013

Прежде всего, мне бы очень хотелось увидеть код для readNextMessage, поскольку это может быть причиной.

Фабрика соединений очереди, настроенная как ресурс XA. Вы пытаетесь использовать JTA для транзакций, поэтому, насколько я знаю, вам необходимо соответствующим образом настроить сообщение qcf.

Вам не нужно настраивать JmsTemplate для транзакций, так как они обрабатываются QueueConnectionFactory.

С другой стороны: если вы просто имеете дело с mq, вы можете пропустить UTA JTA-провайдера и использовать транзакционные JMS-сессии, которые должны работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...