2017-01-16 98 views
0

我有一個公開通過Spring MVC一個REST API一個春天啓動應用程序。春季啓動tomcat的嵌入不同的行爲爲獨立

當我運行我的應用程序在本地使用的是嵌入式的Tomcat我可以在結尾加上斜槓訪問資源 - 例如POST /資源/

然而,當我在戰爭部署到一個獨立的Tomcat實例,我得到404,如果我包括在URL尾隨斜線,但沒有最後的斜線成功 - 比如POST /資源。

嵌入式tomcat可以使用或不使用結尾斜槓。

我請求映射

@RequestMapping(value = "/resource", method = RequestMethod.POST) 

我已經試過各種配置選項,包括

@Override 
public void configurePathMatch(PathMatchConfigurer matcher) { 
    matcher.setUseRegisteredSuffixPatternMatch(true); 
    matcher.setUseTrailingSlashMatch(true); 
} 

我能看到的唯一區別是嵌入式Tomcat是V8和獨立是V7。這兩種運行完全相同的源代碼,但表現不同。

任何人都可以建議如何解決這個問題?

感謝

+0

爲什麼不嘗試獨立的Tomcat 8,看看它是如何工作:

我從web.xml中刪除welcome文件,並更新了我的請求映射到解決這個問題? –

+0

@AndyWilkinson好主意......幸好我已經想通了,不會有設置一個新的環境,只是爲了調試這個! – FMC

回答

1

我能解決這個問題。對於任何其他人找到這篇文章...

由於某種原因,Tomcat 7試圖將請求與尾部斜槓映射到一個歡迎文件(index.jsp)。它還如果請求要包含一個斜線,除非你專門設置的請求映射爲「/」儘管setUseTrailingSlashMatch比賽真不識別端點。

此行爲在我的嵌入式tomcat(v8)中未被鏡像。

@RequestMapping(value = {"/resource","/resource/"}, method = RequestMethod.POST)