轨道交通中间件

EJB3.0 MDB中对MQ事务的处理

场景: EJB3.0 从QueueA 中取得消息后,向QueueB放入消息.

问题:抛出运行时异常后,QueueA中的消息自动放回,但是QueueB中放入数据了,应该QueueB中也没有数据才对。

代码如下:
public void onMessage(Message message) {
TextMessage text = (TextMessage) message;// From QueueA 
try {
test();
throw new RuntimeException();
} catch (JMSException e) {
e.printStackTrace();
}
}

private static void test() {
MQManager qManager = new MQManager();
try {

qManager.connect("9.123.100.42", "SYSTEM.DEF.SVRCONN", "CLUSQM",
"1415");
qManager.put("QueueB", new String("Hello world!!"));
} catch (Exception e) {
e.printStackTrace();
}
参与4

3同行回答

shileishilei开发工程师ibm
谢谢楼上两位的回答,问题已解决。显示全部
谢谢楼上两位的回答,问题已解决。收起
轨道交通 · 2011-04-21
浏览632
le0911le0911技术经理农信银资金清算中心
你这么写 不是two phase Commit显示全部
你这么写 不是two phase Commit收起
银行 · 2011-04-21
浏览646
flying_eagleflying_eagle系统架构师某汽车制造公司
我想你MDB开发和部署时没有正确设置其事务属性;第二,直接连接QAMANAGER不是正确的做法;应该设置数据源和受管对象,然后使用这些受管对象操作MQ,这样才能把你对MQ的操作完全加入到JAVA EE的事务管理器中....显示全部
我想你MDB开发和部署时没有正确设置其事务属性;
第二,直接连接QAMANAGER不是正确的做法;应该设置数据源和受管对象,然后使用这些受管对象操作MQ,这样才能把你对MQ的操作完全加入到JAVA EE的事务管理器中.收起
互联网服务 · 2011-04-21
浏览644

提问者

shilei
开发工程师ibm

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2011-04-21
  • 关注会员:1 人
  • 问题浏览:4274
  • 最近回答:2011-04-21
  • X社区推广