Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 例外上诉执行令_Java_Jax Rs - Fatal编程技术网

Java 例外上诉执行令

Java 例外上诉执行令,java,jax-rs,Java,Jax Rs,我有一个异常映射器,如下所示 import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import javax.ws.rs.ext.ExceptionMapper; import javax.ws.rs.ext.Provider; @Provider public class NotFoundMapper implements ExceptionMapper<NotFoundException&

我有一个异常映射器,如下所示

import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;

@Provider
public class NotFoundMapper implements ExceptionMapper<NotFoundException> {

    private final Logger log = LoggerFactory.getLogger(getClass());
    private final MapperResponseBuilder responseBuilder = new MapperResponseBuilder();

    @Override
    public Response toResponse(NotFoundException ex) {
        log.warn("NotFoundException : " + ex.getMessage(), ex);
        return responseBuilder.buildErrorResponse(ex.getMessage(), Status.BAD_REQUEST);
    }
}
导入javax.ws.rs.core.Response;
导入javax.ws.rs.core.Response.Status;
导入javax.ws.rs.ext.ExceptionMapper;
导入javax.ws.rs.ext.Provider;
@提供者
公共类NotFoundMapper实现ExceptionMapper{
私有最终记录器log=LoggerFactory.getLogger(getClass());
私有最终MapperResponseBuilder responseBuilder=新MapperResponseBuilder();
@凌驾
公众对响应的响应(非发现异常){
log.warn(“NotFoundException:+ex.getMessage(),ex);
返回responseBuilder.buildErrorResponse(例如getMessage(),Status.BAD_请求);
}
}
因此NotFoundException是一个RuntimeException。我想有3个例外映射器,其中

  • 优先级更高的NotFoundException
  • 具有下一优先级的运行时异常
  • 最后例外

  • 有没有办法解决这些问题

    它已经以该优先级运行。最具体的是击中

    选择异常映射提供程序映射异常时,实现必须使用泛型类型为最接近异常超类的提供程序


    如果我没有正确理解你的问题,而你却希望所有三个地图绘制者都被击中,那就不会发生。每个请求只命中一个映射器。这是一种避免无限循环的安全机制。

    它已经以这种优先级运行。最具体的是击中。如果你想让三个地图绘制者都被击中,那就不会发生。每个请求只命中一个映射器。这是一种避免无限循环的安全机制。谢谢@peeskillet,你可以在asnwerI提出这个问题时添加这个,因为Jersey似乎有时会根据我注册它们的顺序使用错误的异常映射器。在某些奇怪的情况下,球衣(2.8.6或2.9.0)似乎不符合规范?