1

他の理由でBeanタイプのトランザクション(TransactionManagementType.BEAN)を使用する必要があるMDBを備えたGlassfishサーバーにデプロイされたアプリケーションがあります。

特定の状況では、onMessage()メソッド内で、メッセージを確認して拒否できるようにしたいと考えています。「拒否」とは、メッセージをキューに戻し、後で再配信することを意味します。

少し調べてみましたが、トランザクションタイプをContainerに変更して、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

inClient-acknowledgeモードは MDB ではサポートされていません。

于 2013-01-14T16:58:55.953 に答える