以前,当我在Jersey上使用Grizzly时,如果我调用了未在Jersey注释中定义的HTTP方法,它将返回405方法不允许响应,这很好。405不允许在Jersey中使用的方法返回Tomcat的405页
现在我在Tomcat上运行Jersey,服务器返回Tomcat的特定405 html页面。我怎样才能恢复到只发送一个空身体的响应?
以前,当我在Jersey上使用Grizzly时,如果我调用了未在Jersey注释中定义的HTTP方法,它将返回405方法不允许响应,这很好。405不允许在Jersey中使用的方法返回Tomcat的405页
现在我在Tomcat上运行Jersey,服务器返回Tomcat的特定405 html页面。我怎样才能恢复到只发送一个空身体的响应?
你可以在你的web应用的web.xml配置自定义页面:
<error-page>
<error-code>405</error-code>
<location>/empty.txt</location>
</error-page>
位置可以参考一个空的文本文件或JSP/Servlet的/任何适合您的需求。
由该线程采取:http://jersey.576304.n2.nabble.com/how-to-catch-405-errors-td4937392.html
创建一个异常映射类,像这样:
@Provider
public class MyMapper implements
ExceptionMapper<WebApplicationException> {
public Response toResponse(WebApplicationException e) {
Response r = e.getResponse();
if (r.getStatus() == 405) {
return Response.fromResponse(r).entity(...).build();
}
return r;
}
}
这让我捕捉到一个405请求,并返回可通过解析一个更实用的错误资源应用。