Я получил этот вариант использования:
Эта диаграмма представляет модель предприятия.Технология Java EE в Weblogic 10.3 с использованием пружинного фреймворка для IoC и AOP, JPA для постоянного использования с пружинным jpatemplate, интеграция пружин для фрейма взаимодействия.Как вы можете видеть, между службой и шлюзом нет никакой связи, поскольку интеграция с пружиной добавляет весь необходимый волшебный сахар.
Теперь я должен разобраться с обработкой исключений.Вся цепочка не имеет проверенных исключений: также доступ к данным не имеет проверенных исключений, поскольку 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?
С уважением, Массимо