如何为Web服务使用者包装EJBAccessException?

时间:2012-04-02 20:47:02

标签: java web-services security java-ee ejb-3.0

考虑这个简单的例子:

@Stateless
@WebService
public class AccountService {

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

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

如果角色授权失败,EJB容器将抛出EJBAccessException而不输入任何这些方法。异常将被webservice堆栈包装,最终导致一种“javax.ejb.EJBAccessException:未授权此客户调用的客户端”显示在消费者的堆栈跟踪中。

然而这两个是业务方法(至少是第一个),错误地调用它们也是一个商业案例,我希望能够让它们抛出声明的@WebFault异常,这样web服务的消费者就会能够处理安全异常。

这可能吗?

PS:运行Glassfish 3.1.2,Metro WS Stack

0 个答案:

没有答案