0

標準構成で Tomcat 6.0.32 の Guice 3.0 で Jersey 1.11 を使用しています。

configureServlets() {
    filter("/ws/*").through(GuiceContainer.class);
}

そして、単純なリソース クラス:

@Path("/resource")
public class Resource { ... }

それを考えると、「/ws/resource」へのアクセスはうまくいくと思います。しかし、実際にはリソースが見つかりません。問題は、リクエスト パスが正しく計算されていないことにあるようです。回避策として、パラメーターPROPERTY_FILTER_CONTEXT_PATH/wsに設定しました。これにより、すべてが機能します。

Map<String, String> jerseyConfig = new HashMap<String, String>();
jerseyConfig.put(ServletContainer.PROPERTY_FILTER_CONTEXT_PATH, "/ws");
filter("/ws/*").through(GuiceContainer.class, jerseyConfig);

したがって、私の質問は次のとおりです。

  1. これは本当にバグですか、それとも「機能」ですか?
  2. これに対する別の解決策または回避策はありますか?

参考までに、関連する可能性のある Guice のバグを 1 つ見たことがあります。別のバグにマージされているようですが、適切に修正されているかどうか疑問に思っています (リンク)

4

1 に答える 1

4

フィルタの代わりにサーブを使用してください。

configureServlets() {
    serve("/ws/*").with(GuiceContainer.class);
}

その後、/ ws/resourceを押すことができます。

于 2012-03-04T15:39:16.003 に答える