Jersey / * servlet映射导致静态资源出现404错误
如果我将Jersey的url-pattern映射到2.0版本中的/ *,则会导致404所有静态资源(例如/index.html)。 我的web.xml有:
JerseyApp org.glassfish.jersey.servlet.ServletContainer javax.ws.rs.Application org.frog.jump.JerseyApp 1 JerseyApp /*
如何使用相同的url模式提供静态内容?
使用Jersey 1.x,如果从Jersey servlet切换到filter,您应该可以从同一路径提供静态内容。 删除您指定的servlet XML并将其切换为:
Jersey Filter com.sun.jersey.spi.container.servlet.ServletContainer javax.ws.rs.Application org.frog.jump.JerseyApp com.sun.jersey.config.property.WebPageContentRegex /.*html Jersey Filter /*
编辑:在泽西2.x你应该能够做同样的事情,但属性的名称已经改变。 尝试以下方法:
Jersey Filter org.glassfish.jersey.servlet.ServletContainer jersey.config.server.provider.packages org.example jersey.config.servlet.filter.staticContentRegex /.*html Jersey Filter /*
你的POM应该包括:
org.glassfish.jersey.core jersey-server 2.0-m07-1 jar compile org.glassfish.jersey.containers jersey-container-servlet-core 2.0-m07-1 jar compile
如果要提供css,jsp等,则必须在init-param中自定义正则表达式。
另一个不错的选择是为您的服务使用版本化路径(“/ v1 / *”),然后静态内容将在没有filter的情况下工作。
您应添加forwardOn404filter以解决此问题
org.glassfish.jersey.examples.bookstore.webapp.MyApplication org.glassfish.jersey.servlet.ServletContainer javax.ws.rs.Application org.glassfish.jersey.examples.bookstore.webapp.MyApplication jersey.config.servlet.filter.forwardOn404 true
正如在此示例中所做的那样https://github.com/jersey/jersey/blob/2.17/examples/bookstore-webapp/src/main/webapp/WEB-INF/web.xml
注意:确保将
配置更改为
配置。 Jersey ServletContainer
既是HttpServlet
又是Filter
,因此您可以在web.xml中将其配置为。 为了使用forwardOn404
属性,需要将Jersey配置为filter。