0

私は次のようなリソースを持っています:

@Path("/Resources/Console")
public class ConsoleResource {

    @POST
    @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public String post(/* */) {
        /* */
    }

}

私のJerseyServletModuleが次のように構成されている場合は常に、サービスは機能します。

@Override
protected void configureServlets() {
    bind(ConsoleResource.class);

    bind(MessageBodyReader.class).to(JacksonJsonProvider.class);
    bind(MessageBodyWriter.class).to(JacksonJsonProvider.class);

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

しかし、index.htmlのようなものはそうではありません。に変更"/*"する"/Resources/*"と、index.htmlなどが再び機能しますが、ConsoleResource@POSTメソッドは機能しません(アクセスするたびに404が表示されます/Resources/Console)。私は後者を機能させたいと思います(このように)。考え?

ありがとう!

4

1 に答える 1

0

問題は、サーバーがさまざまなフィルターなどを介して静的コンテンツを実行していることでした。web.xmlファイルを次のように編集します。

<filter>
    <filter-name>guiceFilter</filter-name>
    <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>guiceFilter</filter-name>
    <url-pattern>/Resources/*</url-pattern>
</filter-mapping>

そして、私のリソースがパスのプレフィックスとして持つという慣習に従い/Resources/、静的コンテンツはGuiceフィルターを通過します。

于 2013-01-31T22:43:18.343 に答える