Java ExceptionMapper不处理我的异常。JBOSS
我有一个定制的Java ExceptionMapper不处理我的异常。JBOSS,java,servlets,exception-handling,jboss,Java,Servlets,Exception Handling,Jboss,我有一个定制的exceptionapper,它捕获我的定制RuntimeException。问题是当我抛出自定义的异常时,异常apper不会被调用 我已在我的ExceptionMapper类中设置了@Provider,并在web.xml中注册为: <context-param> <param-name>resteasy.providers</param-name> <param-value>com.package.myMapper&
exceptionapper
,它捕获我的定制RuntimeException
。问题是当我抛出自定义的异常时,异常apper
不会被调用
我已在我的ExceptionMapper
类中设置了@Provider
,并在web.xml
中注册为:
<context-param>
<param-name>resteasy.providers</param-name>
<param-value>com.package.myMapper</param-value>
</context-param>
我做错了什么?..尝试让您的ResponseException扩展异常,而不是RuntimeException。似乎resteasy和jboss正在捕获您的异常,而不是您的提供商,我遇到了完全相同的问题,并解决了扩展异常的问题:
public class ResponseException extends Exception {
public ResponseException() {
super();
}
public ResponseException(String msg) {
super(msg);
}
public ResponseException(String msg, Exception e) {
super(msg, e);
}
}
以及异常映射器的示例:
import org.apache.log4j.Logger;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
public class BadRequestExceptionMapper implements ExceptionMapper {
private static final Logger log = Logger.getLogger(BadRequestExceptionMapper.class);
@Override
public Response toResponse(BadRequestException e) {
log.info("Bad request: " + e.getMessage());
return Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).build();
}
}
public class ResponseException extends Exception {
public ResponseException() {
super();
}
public ResponseException(String msg) {
super(msg);
}
public ResponseException(String msg, Exception e) {
super(msg, e);
}
}
import org.apache.log4j.Logger;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@Provider
public class BadRequestExceptionMapper implements ExceptionMapper {
private static final Logger log = Logger.getLogger(BadRequestExceptionMapper.class);
@Override
public Response toResponse(BadRequestException e) {
log.info("Bad request: " + e.getMessage());
return Response.status(Response.Status.BAD_REQUEST).entity(e.getMessage()).build();
}
}