将 WAR 部署到 AWS Tomcat 404 错误

Posted

技术标签:

【中文标题】将 WAR 部署到 AWS Tomcat 404 错误【英文标题】:Deploying WAR to AWS Tomcat 404 Error 【发布时间】: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? 【参考方案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 的第二个映射

【讨论】:

非常感谢您的回复。我在日志中看到了很多错误,并认为问题比这更成问题,但这成功了!

以上是关于将 WAR 部署到 AWS Tomcat 404 错误的主要内容,如果未能解决你的问题,请参考以下文章

将 Spring Boot WAR 部署到 Tomcat 8 - 访问资源时的 HTTP 404

Tomcat 在所有新部署的 WAR 文件上报告 404 错误?

部署 WAR 文件会在 Tomcat 上给我一个 404 状态码?

springboot打war包后部署到tomcat后访问返回404错误

springboot打包成war,部署到tomcat,访问404

将 WAR 部署到 Tomcat(Spring Boot + Angular)