私はこのユースケースを得ました:
この図は、エンタープライズ モデルを表しています。Weblogic 10.3 上の Java EE テクノロジは、IoC および AOP 用の Spring フレームワーク、Spring jpatemplate を使用した永続性用の JPA、対話フレーム用の Spring 統合を活用しています。ご覧のとおり、春の統合により必要なすべての魔法の砂糖が追加されるため、サービスとゲートウェイの間に結合はありません。
次に、例外処理に対処する必要があります。すべてのチェーンにはチェック例外がありません。jpatemplate は実行時例外ですべての SQL 例外をラップするため、データ アクセスにもチェック例外はありません。
したがって、私が処理する唯一のチェック例外は 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);
}
}
たとえば、チェーンの一部のコンポーネントで NPE を取得すると、メッセージが JMS キューでロールバックされ、プロセスがループバックされることに気付きました。
このシナリオで例外を処理する最良の方法はどれですか? MDB ですべての runtimeExceptions をキャッチしますか?
よろしくマッシモ