2

これは基本的に途方に暮れており、ほぼ1週間続きます。私は会社のアーキテクチャの一部に取り組んでおり、REST をすべてセットアップしようとしています。javax.ws.rs パッケージにないメソッドが 2 つあります - SEARCH と PATCH です。SEARCH を実装するために、プロジェクトで次のインターフェイスを作成しました: (ほとんどの場合、例からのコピー/貼り付け)

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

}

これを使用するコードは、直接呼び出された場合に問題なく動作します。ただし、メイン サービスと対話する Web サービスは毎回失敗します500 Invalid HTTP method: SEARCH。したがって、明確にするために、2 つの Web 対応サービスがあります。上記のコードを使用する最初のものは正常に動作します。最初のサービスへのプロキシ以外の何物でもないはずの 2 番目のサービスは失敗します。

問題が発生している 2 番目のサービスは、jetty で実行されます。プロキシを実行しているサーブレットは org.mortbay.servlet.ProxyServlet の拡張です - 唯一のオーバーライドは init と proxyHttpUrl にあり、URL の微調整を行います。最初のサービスをシャットダウンでき、2 番目のサービスでもエラーが返されるため、2 番目のサービスが最初のサービスに応答を渡さないことはわかっています。

私の質問は、「カスタム」(つまり、javax.ws.rs パッケージにはない) http メソッドを有効にするための構成要素が欠落していないかということです。

4

1 に答える 1

1

まず、私の間違いでない限り、そのプロキシ サーブレット コードは非常に古いもので、jetty-6 からのものです。現在、jetty-9 がリリースされています。jetty の最後の 3 つのバージョンは Eclipse からのものであるため、使用する必要がある ProxyServlet は org.eclipse.jetty.servlets.ProxyServlet クラスです。

現在、jetty-7 から、そのプロキシ サーブレットにカスタマイズを追加したため、クライアント交換をより多く変更できます...そして、追加の http メソッドを機能させるためにそれを利用する必要があるかもしれません。http-client が標準の http メソッドのみを除外している可能性があります。その場合、ユースケースに合わせて修正する必要があります (その場合は、 RT/Jetty の下の bugs.eclipse.org でバグを開いてください)。

于 2013-03-28T13:15:51.997 に答える