我正在尝试将JDK 1.8中编译的WAR文件部署到AWS Tomcat Elastic Beanstalk实例。弹性beantalk实例使用JDK 8和Tomcat 8,因此我不明白为什么在部署WAR文件时出现404错误。我正在使用gradle构建和警告应用程序,如果有帮助的话。
日志太大而无法粘贴,我不知道有什么重要意义,因此我将捆绑的zip上传到了我的保管箱中,您可以在此处找到:
https://www.dropbox.com/s/d1ssmz76pbqkn20/BundleLogs-1487348401257.zip?dl=0
我的web.xml也太长而无法粘贴问题,因此我将在此处链接到它:https://www.dropbox.com/s/4m7v3fhcczs0ina/web.xml?dl=0
我知道在Stack Overflow上提供链接是一种不好的做法,因为它们具有可变性,因此一旦找到解决方案,我将编辑问题以直接包含相关的代码段。
最佳答案
您的错误很简单:
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的第二个映射