我可以使用自定义预分派,发布后和错误处理程序代码来包装所有JAX-RS请求吗?

yeg*_*256 6 java jax-rs jersey

我有许多类作为JAX-RS请求"处理程序"公开,使用javax.ws.rs.Path注释.我想在每个请求之前和每个请求之后添加某些操作.此外,我需要创建一个全局应用程序范围的异常处理程序,它将捕获这些处理程序和协议抛出的所有内容.

是否可以使用标准JAX-RS实现此目的,而无需创建继承自com.sun.jersey.spi.container.servlet.ServletContainer(我使用Jersey)的自定义类.

bdo*_*han 3

您还可以使用异常映射器。该机制捕获服务抛出的异常并将其转换为适当的响应:

@Provider  
public class PersistenceMapper implements ExceptionMapper<PersistenceException> {  

    @Override  
    public Response toResponse(PersistenceException arg0) {  
        if(arg0.getCause() instanceof InvalidDataException) { 
           return Response.status(Response.Status.BAD_REQUEST).build();  
        } else { 
           ... 
        } 
    }  

}  
Run Code Online (Sandbox Code Playgroud)

欲了解更多信息,请参阅: