【问题标题】:Deploying WAR to AWS Tomcat 404 Error将 WAR 部署到 AWS Tomcat 404 错误
【发布时间】:2017-07-07 08:28:59
【问题描述】:

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

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

【问题讨论】:

  • 在你的本地机器上运行同样的战争吗?您的所有依赖项是否都在 gradle 中捕获,而不是在您的本地类路径中?另外,您是否尝试将其部署为 ROOT webapp 或只是 your-website.com/webapp 或只是 your-website.com?

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


【解决方案1】:

我不太确定这是否解决了您的问题。我有一个类似的问题,它在扩展 SpringBootServletInitializer 后得到了修复。这是 deone,因为我的应用程序使用 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);
    }
}

【讨论】:

    【解决方案2】:

    你的错误很简单:

    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 的第二个映射

    【讨论】:

    • 非常感谢您的回复。我在日志中看到了很多错误,并认为问题比这更成问题,但这成功了!
    猜你喜欢
    • 2018-03-13
    • 1970-01-01
    • 2013-06-09
    • 2023-03-23
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多