2012-12-21 39 views
2

我正在使用Bitnami Tomcat堆棧上的Java servlet實現JSON Patch規範。 Servlet的結束,我通過重寫處理HTTP PATCH方法HttpServlet.service()方法,像這樣:如何阻止Apache httpd拒絕HTTP PATCH請求?

@Override 
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{ 
    if (request.getMethod().equals("PATCH")) 
     doPatch(request, response); 
    else 
     super.service(request, response); 
} 

的問題是,當我嘗試發送一個HTTP PATCH請求到Tomcat,Apache的httpd的拒絕它與501「方法未實施」。

有沒有辦法讓Apache httpd停止這樣做?

+0

Wnat導致您的問題? Apache HTTPd或Apache Tomcat? –

+0

HTTPd。它拒絕HTTP PATCH請求。我知道這一點,因爲我直接將相同的請求導向Tomcat併到達了我的servlet代碼。但是我不願意將HTTPd永遠帶出循環,所以我想知道是否有一種方法可以將它配置爲轉發PATCH請求。 – gilbertpilz

+0

您是否已經檢查過您的web服務器配置?日誌文件? –

回答

5

AJP13還不支持HTTP PATCH(AJPv13a)。如果您想使用PATCH,請使用HTTP連接您的Apache Web服務器和Tomcat。

+1

AJP協議支持PATCH。這在[此錯誤報告](https://issues.apache.org/bugzilla/show_bug.cgi?id=56884)中有記錄。但是,mod_proxy可能不支持AJP上的PATCH。此外,它似乎[這是修復在Apache2 2.4.3](https://issues.apache.org/bugzilla/show_bug.cgi?id=54416)。另一個選項可能是mod_jk。 –

+0

更正 - 它在2.4.4中修復。 –

-2

HTTP方法PATCH未在Tomcat中實現(按照當前版本7.0.39)。

+0

JSR-315(Servlet 3.0)中沒有「PATCH」方法。 – gilbertpilz

+0

我被RFC5789引導,在那裏描述了它 –

+0

我只是想說如果你需要接受PATCH請求,那麼你不應該使用Tomcat。例如Jersey servlet容器可以提供這樣的支持。 –