【发布时间】:2012-12-28 13:18:27
【问题描述】:
我们有一个应用程序部署到带有 MDB 的 glassfish 服务器,由于其他原因,它必须使用 Bean 类型的事务 (TransactionManagementType.BEAN)。
在某些情况下,在 onMessage() 方法中,我们希望能够查看消息并拒绝它。 “拒绝”是指将消息放回队列中,稍后再发送。
我搜索了一下,但我发现的所有似乎都表明我应该将事务类型更改为 Container 并调用 setRollbackOnly()。但是,正如我上面所说,由于其他限制,这不是一个选择。
有什么办法吗?
【问题讨论】:
-
你试过抛出异常吗?
-
被拉到一边,还没来得及看,但下次有机会我会尝试例外...
-
抛出异常也不会将其放回队列中。
-
然后我建议打破你的逻辑,并使用 CMT 创建一个新的 MDB - 就像一个包装器,
onMessage()就足够了。您仍然可以从 MDB 调用当前 EJB 中的业务逻辑。
标签: java glassfish jms java-ee-6