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