2012-02-24 90 views
1

以前,当我在Jersey上使用Grizzly时,如果我调用了未在Jersey注释中定义的HTTP方法,它将返回405方法不允许响应,这很好。405不允许在Jersey中使用的方法返回Tomcat的405页

现在我在Tomcat上运行Jersey,服务器返回Tomcat的特定405 html页面。我怎样才能恢复到只发送一个空身体的响应?

回答

0

你可以在你的web应用的web.xml配置自定义页面:

<error-page> 
    <error-code>405</error-code> 
    <location>/empty.txt</location> 
</error-page> 

位置可以参考一个空的文本文件或JSP/Servlet的/任何适合您的需求。

1

由该线程采取: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请求,并返回可通过解析一个更实用的错误资源应用。