我使用Jersey创建REST服务,当我得到NullPointerException或其他类型的RuntimeException时,403错误被发送到客户端。为什么Jersey发送的是403而不是500,我该如何更改?
PS:我知道如何创建一个ExceptionMapper,但似乎奇怪的是,创建它到RuntimeException类。我还使用特定的异常扩展WebApplicationException的异常我抛出。
我无法重现您的问题。调用此资源返回500:
@GET
@Path("/npe")
public Response triggerNpe() {
String npe = null;
npe.length();
return Response.ok().build();
}
反应:
HTTP Status 500 - Internal Server Error
javax.servlet.ServletException: java.lang.NullPointerException
我使用的是带有标准库的Glassfish 4。
这不应该发生。你的错误在某处得到了处理。看看这些注释:
- @ControllerAdvice
- @ResponseStatus (HttpStatus.FORBIDDEN)
- @ExceptionHandler (YourException.class)