以前,當我在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請求,並返回可通過解析一個更實用的錯誤資源應用。