将WAR部署到AWS Tomcat 404错误

时间:2017-02-17 17:42:22

标签: java amazon-web-services tomcat elastic-beanstalk war

我正在尝试将在JDK 1.8中编译的WAR文件部署到AWS Tomcat Elastic Beanstalk实例。弹性beanstalk实例使用JDK 8和Tomcat 8,所以我不明白为什么在部署WAR文件时遇到404错误。如果有任何帮助,我使用gradle构建和WAR应用程序。

日志太大而无法粘贴,我也不知道什么是重要的,所以我将捆绑的zip上传到我的Dropbox,你可以在这里找到: 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上提供链接是因为它们的可变性,这是不好的做法,所以一旦找到解决方案,我将编辑问题直接包含相关的代码段。

2 个答案:

答案 0 :(得分: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的第二个映射

答案 1 :(得分:2)

我不太确定这是否解决了你的问题。我有一个类似的问题,它在扩展SpringBootServletInitializer后得到修复。这是因为我的应用程序使用Tomcat 8,Java 8平台运行,它就像一个容器。通常,在容器中部署war时需要扩展SpringBootServletInitializer。

以下是Application.java示例

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

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