关于JTA+JMS的问题

向各位请教一个关于JBossMQ的问题:
1.在JBOSS中,配置一个Queue
2.创建一个Servlet,向队列发送消息(JMS Sender)
3.然后在另一台机器上创建一个Standalone的Java程序,从jboss的队列中接收消息
这个过程一切正常,
如果做个JTA事务测试,修改第2步,则出现问题:
2.创建一个Servlet,向队列发送消息(JMS Sender),在JTA编程事务中完成JMS操作,JMS操作使用XA-API。
操作完成后,无论是tx.rollback,还是tx.commit,结果是消息都成功放入队列,receiver皆成功接收。更奇怪的是消息每次被consume之后,还待在队列里,再使用一个receiver还是可以成功接收。

各位老大,是不是我的jboss的配置有问题?实在搞不懂了

问题解决了,晕,实在是....
JMS Recevier在create session时,第一个参数误写成true,变成支持local transaction了。第一个参数改成false,一切OK。

不好意思,浪费各位时间了

(不过还是有些迷糊,provider和receiver之间的session具有transaction时,语义是什么?receiver可以从队列取出数据,但是数据不从队列删除?)

只有当producer事务完成后,receiver才可从队列取出数据,并且数据从队列删除。

如果你的JBoss不实现上述现象,一般和你使用的事务配置错误有关。