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