我与Tomcat的8新泽西Servlet的发现资源时的url-pattern为/ *,但是当url-pattern的是/
编写一个Web服务,使用泽西2.17在web.xml中无法找到资源时,我更改我的网址格式为/ *我可以访问网络服务并获得回复。 但是,当我将url模式更改为/然后我总是得到404错误(未找到资源)。
不工作
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
工作是完全
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
我的web.xml中不包含其他的Servlet或过滤器映射除了这一点。
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>
org.glassfish.jersey.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.bandi.rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
是否有任何其他配置需要使这项工作? 我不能使用/ *作为servlet映射,因为我需要某些过滤器在此servlet执行之前运行。如果过滤失败,那么对servlet的调用就不应该继续。
所以基本上我不想覆盖任何已经存在的映射。
@BalusC 我将现有的(300+)春泽西服务。 Spring的**“servlet.DispatcherServlet”**允许使用默认/ url-pattern。 定义/ api/*的问题在于,这些300多种服务正在被许多项目使用,并且还需要对其结尾进行更改。 即将URL更改为** http://someweb.com/api/mywebservice**而不是现有的** http://someweb.com/mywebservice**。 所以我不能改变我们与其他服务的合同。 Jersey为什么不能拥有这个功能?它可以检查任何Path的定义是否与当前的URI Path匹配。 如果不是,它会抛出404。 –
我正在改变NGINX的请求URL,以便为请求添加更多字符,所以我可以继续使用/ rest/*作为url模式。 –
太好了。我将其转贴为答案。 – BalusC