Spring - сообщение JMS, отправленное и полученное в MDB, до того, как вставленная запись зафиксирована - PullRequest
0 голосов
/ 21 июня 2019

У меня очень простой сценарий, включающий базу данных и 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. Из-за этого ошибка при получении не найдена.

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