У меня очень простой сценарий, включающий базу данных и JMS на сервере приложений (WebSphere).
Я использую Spring Framework и я новичок в Spring управления транзакциями.
Я также проверяю в журналах мой менеджер транзакций org.springframework.transaction.jta.WebSphereUowTransactionManager.
Мой bean.xml выглядит следующим образом.
<tx:annotation-driven transaction-manager="transactionManager"/>
<tx:jta-transaction-manager />
<Bean id="helper" class="Helper"></bean>
<Bean id="data" class="Data">
<properties name ="helper" ref ="helper"/>
</bean>
Мой код выглядит следующим образом.
import com.intellect.ipsh.stpframework.jms.JMSUtil;
Class Data implements ApplicationContextAware {
private JMSUtil jmsUtil;
private Helper helper;
private String commonsQueueDestination = "MYQUEUE";
@Override
public void setApplicationContext(ApplicationContext arg0) throws BeansException {
this.context = arg0;
jmsUtil = (JMSUtil ) arg0.getBean("jmsUtil");
}
public void process(){
helper.saveData("some input");
helper.sendMessage("{"key":"Value"}");
}
public void sendMessage(String requestJson){
jmsUtil.sendTo(commonsQueueDestination, requestJson.toString());
}
}
Class Helper {
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveData(Object d){
//JDBC to insert data (throght DBLink )
}
}
Теперь, когда вышеуказанный код выполняется в WebSphere, вставленные записи фиксируются моим транзакционным методом,Мое сообщение достигает пункта назначения MDB. Из-за этого ошибка при получении не найдена.