我有几个从jax-rs Web服务调用的EJB。但是,每次我调用其中一个EJB方法时,我都会使用拦截器拦截该调用。这个拦截器检查API密钥的参数,如果它不存在或不存在于我的数据库中,它会抛出一个我希望在我的jax-rs代码中捕获的异常。然而,由于我的jax-rs类不知道这个异常被抛出的可能性,即使异常可能是一个检查异常,这里最好的做法是什么?声明抛出异常而不抛出它
- 声明我EJB抛出异常(而没有把他们自己)
- 使我异常的未经检查的异常,并检查反正它?
- 还有别的吗?
我有几个从jax-rs Web服务调用的EJB。但是,每次我调用其中一个EJB方法时,我都会使用拦截器拦截该调用。这个拦截器检查API密钥的参数,如果它不存在或不存在于我的数据库中,它会抛出一个我希望在我的jax-rs代码中捕获的异常。然而,由于我的jax-rs类不知道这个异常被抛出的可能性,即使异常可能是一个检查异常,这里最好的做法是什么?声明抛出异常而不抛出它
我想通过抛出未经检查的异常是最好的。然后我使用异常映射器来捕获异常并处理它。
https://docs.oracle.com/javaee/6/api/javax/ws/rs/ext/ExceptionMapper.html
剩下的唯一的事情就是异常输出抑制到日志文件。
请注意,如果您使用EJB引发未经检查的异常,则需要使用'@ ApplicationException',否则EJB容器将回滚该异常并将其转换为EJBException。 –