これは基本的に途方に暮れており、ほぼ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 メソッドを有効にするための構成要素が欠落していないかということです。