作为过滤HTTP状态404
我已经部署了新泽西州2.5应用程序作为一个过滤器,但我得到一个HTTP状态404新泽西州2.5 - 访问本(或任何资源)URL时未找到错误:作为过滤HTTP状态404
本地主机:8080/[appname]/rest/users/new
此应用程序作为servlet部署时以前可以使用。如果我将'过滤器'标签转换为'servlet'标签,那么URL会再次运行。
启动时没有例外,并且以前设置的断点不再被触发。就好像没有找到资源类。任何想法可能会出错?
我的web.xml:
<filter>
<filter-name>jerseywebapp</filter-name>
<filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.[pkg].resources</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>
org.glassfish.jersey.media.multipart.MultiPartFeature,
org.glassfish.jersey.server.mvc.jsp.MvcFeature,
org.glassfish.jersey.server.mvc.jsp.JspMvcFeature,
org.glassfish.jersey.jackson.JacksonFeature
</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.mvc.templateBasePath.jsp</param-name>
<param-value>/WEB-INF/views</param-value>
</init-param>
<!--
<load-on-startup>1</load-on-startup>
-->
</filter>
<filter-mapping>
<filter-name>jerseywebapp</filter-name>
<url-pattern>/rest/*</url-pattern>
</filter-mapping>
以我的经验,改变service
标签filter
标签的工作原理相同,需要提醒的是@Path("...")
注释将不承担的范围内进行匹配<url-pattern>
。您必须手动将模式添加到路径注释中。
例如,该XML在web.xml
:
...
<servlet-mapping>
<servlet-name>jerseywebapp</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
有了这个配置,你可以期望在/rest/test/ping
得到这个路径注释的比赛:
@Path("test")
public class Test {
@GET
@Path("ping")
public Response getPing() {
....
}
现在,如果我们切换使用filter
标签:
...
<filter-mapping>
<filter-name>jerseywebapp</filter-name>
<url-pattern>/rest/*</url-pattern>
</filter-mapping>
需要注意的是,在/rest/test/ping
仍然达到我们的终点,我们需要从“测试”改变我们班@Path
注释“休息/测试”:
@Path("rest/test")
public class Test {
@GET
@Path("ping")
public Response getPing() {
....
}
所有工作都是在部署为servlet的时候运行的,所以我从来没有打扰过滤器部署的工作。我已经接受了答案,因为它看起来很相关,并且可能是很好的信息。 – broadbear 2016-08-05 00:34:31
限制 新泽西Web应用程序那些想要使用JSP模板支持的应用程序应该在应用程序的web.xml中注册为Servlet过滤器而不是Servlet。对于需要使用Jersey MVC模板支持的Web应用程序,目前不支持Servlet 3.0中引入的web.xml-less部署样式。 – broadbear 2014-12-13 03:18:24
面临放弃未答复的问题的风险,我必须报告说我正在将Jersey作为Servlet运行,并且一切正常。 – broadbear 2015-01-08 01:17:00
您是否曾经在这个问题上找到过解决方案或更多信息@broadbear? – amess 2016-08-04 21:05:12