Я пытаюсь доказать, что мне не нужен activemq rar, развернутый в JBoss EAP 6.3, чтобы использовать транзакции XA ... Я бы хотел использовать только активную клиентскую банку mq. Я создал простой проект весенней загрузки и выставил метод, который открывается через спокойную веб-службу. Следующий код корректно откатывается, если у меня развернут активный-mq rar.Операции XA, использующие весну и activemq
@Transactional
public void work() throws Exception {
ConnectionFactory connectionFactory = (ConnectionFactory) this.context
.getBean("jmsConnectionFactory");
// Send a message
MessageCreator messageCreator = new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage("Test message!");
}
};
JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
System.out.println("Sending a new message.");
jmsTemplate.send("test-destination", messageCreator);
throw new Exception("Something bad happened!!");
}
Однако, когда я создаю свой собственный ConnectionFactory через JNDI, код не откатить и сообщение не отправляется.
@Transactional
public void work() throws Exception {
ConnectionFactory connectionFactory = null;
try {
Context ctx = new InitialContext();
connectionFactory = (ConnectionFactory) ctx.lookup("java:/ConnectionFactory");
} catch (NamingException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
// Send a message
MessageCreator messageCreator = new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
return session.createTextMessage("Test message!");
}
};
JmsTemplate jmsTemplate = new JmsTemplate(connectionFactory);
System.out.println("Sending a new message.");
jmsTemplate.send("test-destination", messageCreator);
throw new Exception("Something bad happened!!");
}
То, что я хотел бы понять, что весна-ботинки делают во время загрузки, чтобы обеспечить поддержку XA, когда ActiveMQ гАг развернут в качестве адаптера ресурсов на EAP. Если я это понимаю, я думаю, что мне нужно будет просто скомпоновать банку с активным mq-клиентом и банком базы данных в моем весеннем приложении (не основанном на Spring-загрузке) и по-прежнему предоставлять поддержку XA, т. Е. Получить весну для управления транзакциями XA путем делегирования в PlatformTransactionManager.
Любая помощь будет оценена по достоинству.
Спасибо, будет
Какая версия Spring Boot и почему вы не используете Spring boot ... Идет, если вы вручную настроите все, а не позволяете Spring Boot делать автоматическую настройку. –
Привет, Я использую spring-boot 1.2.1, чтобы попытаться доказать суть. Я хотел бы использовать весеннюю обувь. Тем не менее, я работаю с 5-летней системой (которая использует весну, iBatis размещена на weblogic) Они перемещают приложение в JBoss EAP и JBoss A-MQ. Они требуют поддержки транзакций XA и . Я хотел бы узнать, могу ли я достичь этого, используя банку клиента A-MQ в сочетании с соответствующим драйвером базы данных XA. –
Я хотел бы понять, как использовать делегат PlatformManager Spring на сервере приложений, когда он присутствует. Когда я использую весеннюю загрузку, я вижу загрузку платформ PlatformManager и jmsConnectionFactory. Однако, когда я не использую activemq rar и использую клиент, ActiveMQConnectionFactory появляется как , а не ActiveMQXAConnectionFactory. –