Как обернуть EJBAccessException для потребителей веб-сервисов? - PullRequest
1 голос
/ 03 апреля 2012

Рассмотрим этот простой пример:

@Stateless
@WebService
public class AccountService {

  @WebMethod
  @RolesAllowed("CUSTOMER")
  public void replenishBalance(double amount) {
    //
  }

  @WebMethod
  @RolesAllowed("BOSS")
  public void emptyBankAccounts() {
    //
  }
}

Если авторизация роли не удалась, контейнер EJB сгенерирует EJBAccessException без ввода любого из этих методов. Исключение будет заключено в стек веб-службы, в результате чего будет получено что-то вроде "javax.ejb.EJBAccessException: клиент, не авторизованный для этого вызова" , будет отображаться в трассировке стека потребителя.

Тем не менее, эти два бизнес-метода (по крайней мере, первый), неправильный вызов их также является бизнес-кейсом, и я ожидаю, что смогу заставить их выбросить объявленное исключение @WebFault, так что потребитель веб-сервиса сможет обрабатывать исключения безопасности тоже.

Это возможно?

PS: работает Glassfish 3.1.2, стек Metro WS

...