1

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

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

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

有没有办法做到这一点?

4

2 回答 2

0

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

于 2013-01-14T16:27:21.813 回答
0

看这个:

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

它说Client-acknowledgeMDB不支持in模式。

于 2013-01-14T16:58:55.953 回答