在码头上使用'SEARCH'或'PATCH'

时间:2013-03-27 21:04:32

标签: java jetty

这基本上让我感到茫然,已经有将近一个星期了。我正在研究公司架构的一部分,试图让REST全部设置好。 javax.ws.rs包中有两种方法 - SEARCH和PATCH。我在项目中创建了以下接口来实现SEARCH :(主要是从示例中复制/粘贴)

/** imports and such as appropriate **/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@HttpMethod("SEARCH")
public @interface SEARCH {

}

使用它的代码可以完美无缺地直接调用它。但是,每次使用500 Invalid HTTP method: SEARCH时,与主服务通信的Web服务都会失败。因此,需要明确的是,有两种支持Web的服务。使用上面代码的第一个工作正常。第二个,它应该只是第一个服务的代理失败。

遇到问题的第二项服务在码头上运行。正在进行代理的servlet是org.mortbay.servlet.ProxyServlet的扩展 - 唯一的覆盖在init和proxyHttpUrl上进行一些URL调整。我知道第二个服务没有将响应传递给第一个,因为我可以关闭第一个,第二个仍然会给我错误。

我的问题是,我是否缺少配置件以启用“自定义”(即不在javax.ws.rs包中)http方法?

1 个答案:

答案 0 :(得分:1)

首先,代理servlet代码很老,来自jetty-6,除非我弄错了。我们现在已经发布了jetty-9,并且最后三个版本的jetty来自eclipse,所以你应该使用的ProxyServlet是org.eclipse.jetty.servlets.ProxyServlet类。

现在,从jetty-7开始,我们为该代理servlet添加了一些自定义功能,因此您可以修改更多的客户端交换...并且您可能需要利用它来获得额外的http方法。可能是http-client只能使用标准的http方法,在这种情况下我们必须为你的用例修复它(open a bug at bugs.eclipse.org under RT/Jetty如果是这种情况)。