我得到了这个用例:
此图表示企业模型。Weblogic 10.3 上的 Java EE 技术利用用于 IoC 和 AOP 的 spring 框架、用于持久性的 JPA 与 spring jpatemplate、用于交互框架的 spring 集成。如您所见,Service 和 Gateway 之间没有耦合,因为 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?
亲切的问候马西莫