これは私の問題です。 2つのEJB/JPA/Hibernateモジュールを使用して同期バッチを処理します。EJB/JPAバッチプロセス例外管理
最初のモジュールは、データベースAの情報を読み取り、変更を検出します。 変更が検出されると、変更された項目はJMSを介して2番目のモジュールに送信されます。
第二のモジュールは、更新処理が完了すると、正常に更新されたアイテムのIDを含むメッセージが最初に送信され、データベースBに変更された項目と更新情報を通じて
をメッセージと反復処理を読み出しデータベースAにフラグを立てるモジュール。正常に更新された項目。
すべてのプロセスは機能しますが、コンテナ管理のEntityManagerを使用して持続プロセス中に発生する可能性のある例外の管理方法がわかりません。
コンテナ管理のEntityManagerで作業していなかった場合、例外が発生した場合は、挿入ごとに新しいトランザクションを開き、コミットまたはロールバックします。
正常に更新されたアイテムのIDを持つリストに、現在処理中のアイテムのIDを追加して例外を発生させないために、例外が発生したことを知る必要があります。また、10個のアイテムを処理していて、リストの最初のアイテムが例外を作成した場合は、残りの9個のアイテムを続行する必要があります。
永続メソッドの前に@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)を使用すると、私の問題が解決するとは思っていましたが、それはできませんでした。
コンテナ管理のEntityManagerを使用して行う必要がある方法はありますか?
ありがとうございます。