MyResourceManager を生成する pojo プロデューサーがあります。
@TraderResouceManager @RequestScoped public MyResourceManager(){ ... ... }
MyResourceManger は SLSB に注入されます
@inject @TraderDB プライベート MyResourceManager rm;
ディスポーザーは次のとおりです。
public void close(@Disposes @TraderResouceManager MyResourceManager rm) { rm.close(); }
質問
close() はいつ実行されますか?
トランザクションを閉じる前ですか、それともトランザクションを閉じた後ですか?
編集:質問にはおそらく追加の説明が必要です。データベース接続の類推を見てみましょう。
リクエストごとに新しい接続を作成する pojo を使用して、@RequestScoped で @producer を作成します。
必要なのは、リクエストの最後に接続を破棄することです。この接続は他の Bean によって共有されます (現時点では SLSB)。特定のリクエストでは、トランザクション内で実行されている多くの Bean が含まれる場合があります。したがって、すべてのトランザクションが論理的に閉じられた後にのみ、接続を閉じる必要があります。
質問 コンテナー管理トランザクションを使用する場合、上記のコードでこの動作を実現できますか?