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