私は、このユースケースを得た:java MDBで例外を処理する最善の方法はどれですか?
この図は、エンタープライズモデルを表しています。 Weblogic 10.3のJava EEテクノロジは、IoCとAOPのためのSpringフレームワークの活用、Springのjpatemplateによる永続性のためのJPA、対話フレームのバネ統合を備えています。 春の統合により、必要なすべての魔法の砂糖が追加されるため、サービスとゲートウェイの間にカップリングはありません。
私は例外処理に取り組まなければなりません。すべてのチェーンにはチェック例外はありません。jpatemplateは実行時例外ですべてのSQL例外をラップするため、データアクセスにはチェック例外はありません。
だから私だけは私がチェーンの一部のコンポーネントに例えばNPEを取得する場合、メッセージがJMSキューとにロールバックされていることに気づいたMDB
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void onMessage(Message message) {
try {
TextMessage textMessage = (TextMessage) message;
String stringMessage = textMessage.getText();
OnlineEventMessage<? extends Serializable> event = eventMessageParser.parse(stringMessage);
legacyEventMessageService.handle(event);
} catch (JMSException e) {
logger.error("si e' verificato un errore JMS nel processamento dell'evento {}", message, e);
}
}
上にあるハンドルの例外をチェックしますプロセスはループバックされます。
このシナリオで例外を処理する最善の方法はどれですか? すべてのruntimeExceptionsをMDBでキャッチしますか?
種類は、このシナリオで例外を処理するための最良の方法です マッシモ
私はトピックからあなたのコメントを気付き、jpatemplateの代わりにjpaを使用することのトレードオフは何か疑問に思っていました。 –
JPA APIは、Springのテンプレートから多少の利益を得る他のAPIとは異なり、すでによく設計された最新のAPIです。 jpatemplateを使用することによるトレードオフは、APIを必要としない別のAPIを使用していることです。私は利益を考えることができないし、そのためにトレードオフのようには思えません。 –