着信メッセージに応答して、一連のアクションをアトミックに実行する必要がある MDB があり、そのために CMT を使用しています。メッセージが処理され、トランザクションがコミットされたら、最後のアクションを実行する必要があります。つまり、スレッド プールで実行するタスクを作成してキューに入れます。この MDB で作成および更新するエンティティは、そこから参照されます。
onMessage() からの成功した (ポストコミット) 戻り時に JMS にメソッド (コールバックなど) を呼び出す方法があるかどうかを調べようとしています。このコールバックは、onMessage() と同じ場所で実行する必要があります。
追加情報は、Glassfish 3.1 と含まれている JMS プロバイダーを使用していることです。何か案は?ありがとう。
うまくいけば明確にするための疑似コードを次に示します。
public void onMessage(final Message inMessage) {
addDatabaseRecord();
addOtherDatabaseRecord();
updateDatabaseRecord();
}
@RunAfterOnMessageCommits // Hypothetical annotation
public void postCommit()
// Must not happen until transaction commits.
addToThreadPoolWorkQueue();
}