我在应用程序中抛出异常MyCustomException
。 (EJB层)
我在Web服务层中有一个异常映射器,如下所示-
package net.webservices;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;
import net.common.MyCustomException;
@Provider
public class EJBExceptionMapper implements
ExceptionMapper<net.common.MyCustomException> {
public Response toResponse(MyCustomException exception) {
return Response.status(Response.Status.BAD_REQUEST).build();
}
}
我已经在Web服务层的
web.xml
中注册了我的映射器,如下所示- <context-param>
<param-name>resteasy.providers</param-name>
<param-value>net.webservices.EJBExceptionMapper</param-value>
</context-param>
EJBExceptionMapper
没有捕获MyCustomException
。但是相反,它被Web服务实现的catch块所捕获。可能是什么问题呢?
注意:我不想使用
getProviderFactory().addExceptionMapper()
手动注册ExceptionMapper 最佳答案
我不知道为什么您的解决方案不起作用(但我从未使用过RESTeasy,仅使用Jersey)。无论如何,扩展WebApplicationException
可能会更简单。这样,您不必注册提供商:
public class MyCustomException extends WebApplicationException {
public MyCustomException() {
super(Response.status(Response.Status.BAD_REQUEST).build());
}
}