2017-02-17 191 views
0

我試圖將在JDK 1.8中編譯的WAR文件部署到AWS Tomcat Elastic Beanstalk實例。彈性beanstalk實例使用JDK 8和Tomcat 8,所以我不明白爲什麼我在部署WAR文件時收到404錯誤。如果有任何幫助,我正在使用gradle構建和WAR應用程序。將WAR部署到AWS Tomcat 404錯誤

日誌太大,粘貼,我不知道什麼是顯著,所以我上傳的捆綁壓縮到我的Dropbox的,你可以在這裏找到: https://www.dropbox.com/s/d1ssmz76pbqkn20/BundleLogs-1487348401257.zip?dl=0

我的web.xml也過長的問題貼,所以我會在這裏鏈接到它:https://www.dropbox.com/s/4m7v3fhcczs0ina/web.xml?dl=0

我知道這是不好的做法放棄,因爲他們的可變性的堆棧溢出的聯繫,所以一旦找到解決方法,我會編輯的問題,直接包括相關的代碼段。

+0

這是否在本地計算機上一樣運行戰爭?你所有的依賴都是在Gradle中而不是在你的本地類路徑中捕獲的嗎?你也試圖部署它作爲ROOT的Web應用程序或只是your-website.com/webapp或只是your-website.com? –

回答

3

你的錯誤是非常直截了當:

org.xml.sax.SAXParseException; systemId: file:/var/lib/tomcat8/webapps/ROOT/WEB-INF/web.xml; lineNumber: 477; columnNumber: 23; Error at (477, 23) : The servlets named [TextHistoryServlet] and [TextHistoryServlet] are both mapped to the url-pattern [/TextHistoryServlet] which is not permitted 

圍繞這條線,你會看到:

<servlet-mapping> 
    <servlet-name>CsvParseServlet</servlet-name> 
    <url-pattern>/CsvParseServlet</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>TextHistoryServlet</servlet-name> 
    <url-pattern>/TextHistoryServlet</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>TextHistoryServlet</servlet-name> 
    <url-pattern>/TextHistoryServlet</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>SurveyServlet</servlet-name> 
    <url-pattern>/SurveyServlet</url-pattern> 
</servlet-mapping> 

爲TextHistoryServlet

+0

非常感謝死者的迴應。我在日誌中看到了不少錯誤,並認爲這個問題比這個問題更嚴重,但這確實有竅門! –

0

取下第二映射我也不太清楚,如果這解決了你的問題。我有一個類似的問題,並且在擴展SpringBootServletInitializer之後被修復了。這是因爲我的應用程序運行使用Tomcat 8,Java 8平臺,這就像一個容器。通常,在容器中部署戰爭時,需要擴展SpringBootServletInitializer。

下面是一個簡單Application.java

@SpringBootApplication 
public class Application extends SpringBootServletInitializer { 
    public static void main(String[] args) { 

     SpringApplication.run(Application.class, args); 
    } 
}