У меня есть приложение EJB3, которое состоит из нескольких EJB для доступа к БД и предоставляется через Session Bean в качестве веб-службы.
Теперь есть две вещи, которые мне нужно выяснить:
1) Можно ли каким-то образом предотвратить исключения SQL из-за того, что веб-служба выдает ошибку SOAP? Транзакции обрабатываются контейнером, и в настоящее время исключения sql вызывают исключение RollBackException и, как следствие, откат транзакции (желаемое поведение) и веб-службу, которая выдает ошибку (не желательно).
2) Я хочу расширить веб-сервис, чтобы иметь возможность принимать список объектов и сессионный компонент для сохранения каждого из них. Тем не менее, я хочу, чтобы каждая сущность выполнялась в своей собственной транзакции, чтобы в случае сбоя одного из них другие не были затронуты (и снова веб-служба не должна отказывать).
Для (1) я пытался поймать исключение RollBackException, но я предполагаю, что оно генерируется где-то в другом потоке, так как блок catch никогда не достигается. Я предполагаю, что для (2) мне потребуется изучить транзакции пользователя, но, во-первых, я бы предпочел, чтобы контейнер управлял этим, а во-вторых, не знаю, как форсировать использование транзакций пользователя.
Спасибо.