0

I have a resource that looks like this:

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

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

}

Whenever my JerseyServletModule is configured as follows, the services work:

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

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

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

But things like index.html don't. Changing "/*" to "/Resources/*" causes things like index.html to work, again, but then ConsoleResource's @POST method doesn't work (I get a 404 whenever I access /Resources/Console). I assume I want to get the latter working (like this). Thoughts?

Thanks!

Community
  • 1
  • 1
Jesus is Lord
  • 14,971
  • 11
  • 66
  • 97
  • 1
    How about: http://stackoverflow.com/questions/12422660/jersey-servlet-mapping-causes-404-error-for-static-resources/12428843#12428843 ? – condit Jan 31 '13 at 21:11
  • @condit: That wasn't exactly what I ended up doing, but it pointed me in the right direction. Thanks! – Jesus is Lord Jan 31 '13 at 22:41

1 Answers1

0

The issue ended up being the server running static content through the various filters and whatnot. By editing the web.xml file to be the following:

<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>

And abiding by the convention that my resources would have /Resources/ as a prefix to their path, static content gets through the Guice filter.

Jesus is Lord
  • 14,971
  • 11
  • 66
  • 97