グラスフィッシュにデプロイされたwarファイルがあります。Singleton Bean があり、その中に 1 つの同期メソッドがあります。
@TransactionAttribute (TransactionAttributeType.REQUIRED)
public synchronized void do()
{
...
}
ただし、メソッドが呼び出される前にトランザクションが開始されることに気付きました。呼び出し元が Bean クラスのモニターでロックを取得した後、トランザクションを開始するにはどうすればよいですか?
ありがとうございました。
更新: 一度に 1 つのスレッドからしか呼び出せない Bean メソッドを作成しようとしています。前のスレッドが完全に処理を完了するまで、他のスレッドがこのメソッドを呼び出さないようにします。シングルトン Bean を使用するというアイデアを得た別のスレッドを作成しました:グラスフィッシュで期待どおりに動作しないステートレス セッション Bean の同期メソッド
更新: いくつか読んだ後、自分のトランザクション UserTransaction を作成できるようです。それはサポートされますか?どうでも。次のエラー メッセージが表示されました。
Only session beans with bean-managed transactions can obtain UserTransaction