将bean类型的事务返回到队列

时间:2013-01-14 14:58:55

标签: java glassfish jms java-ee-6

我们将应用程序部署到带有MDB的glassfish服务器,由于其他原因,必须使用Bean类型的事务(TransactionManagementType.BEAN)。

在某些情况下,在onMessage()方法中,我们希望能够查看消息并拒绝它。 “拒绝”是指将消息放回队列中并在以后重新发送。

我已经搜索了一下但是我发现的所有内容似乎都说我应该将事务类型更改为Container并调用setRollbackOnly()。但是,正如我上面所说,由于其他限制,这不是一种选择。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

虽然MDB可能抛出异常并回滚当前事务,强制调用者重新发送消息,但bean管理的事务方法无法加入现有事务。我认为要实现这种行为,您应该在发送方和接收方MDB之间实现通信协议,使用数据存储来建模消息队列。

答案 1 :(得分:0)

看看这个:

http://www.datadisk.co.uk/html_docs/ejb/ejb3_mdb.htm

它表示在MDB中不支持Client-acknowledge模式。