Spring Boot:在 Tomcat 7 上部署 WAR

Posted

技术标签:

【中文标题】Spring Boot:在 Tomcat 7 上部署 WAR【英文标题】:Spring Boot: Deploy WAR on Tomcat 7 【发布时间】:2016-08-11 10:30:28 【问题描述】:

我用 Spring Boot 开发了一个 webapp 并生成了 WAR。 在生成战争之前,我已经按照this 的说明进行操作。我将它部署在 Tomcat 7.0.52 中,但我明白了:

信息: validateJarFile(/opt/devel/server/apache-tomcat-7.0.52/webapps/myapp/WEB-INF/lib/tomcat-embed-el-8.0.32.jar) - jar 未加载。请参阅 Servlet 规范 3.0,第 10.7.2 节。违规类:javax/el/Expression.class 2016-04-19 11:48:28.579 WARN 27983 --- [io-8080-exec-14] org.apache.catalina.deploy.WebXml:未知版本字符串 [3.1]。将使用默认版本。

我认为这是由于 servlet 规范版本,但在上面的链接中说它支持 3.0 和 3.1(Tomcat 8)。如果我在 Tomcat 8 中部署我的应用程序,一切正常。

谢谢。

【问题讨论】:

Spring Boot 支持这两种规格.. Tomcat 7 不... 【参考方案1】:

正如 M. Deinum 所提到的,Tomcat 7 使用的是 3.0.x 的 servet API。 Spring Boot 默认使用 3.1。要更改它,如果您使用的是较旧的 servlet 和 tomcat API,Spring Boot 会理解这些 Maven 属性:

<properties>
    <tomcat.version>7.0.69</tomcat.version>
    <servlet-api.version>3.0.1</servlet-api.version>
</properties>

【讨论】:

以上是关于Spring Boot:在 Tomcat 7 上部署 WAR的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot上传文件+部署到Tomcat

使用war将spring-boot和angular 7应用程序部署到tomcat 8.5中

如何让 Spring Boot 应用程序在 tomcat 失败时退出

使用嵌入式 Tomcat 7 在 Spring Boot 中启用 SSL - FileNotFoundException 和 o.a.coyote.http11.Http11NioProtocol 问

Spring Boot配置Tomcat

在 Tomcat 上使用 Spring Boot 进行身份验证