SpringBoot默认支持Tomcat7及以上版本(SpringBoot默认支持servlet3.1版本及以上,Tomcat6只支持到servlet2.5)

测试环境:jdk1.8 + tomcat7+SpringBoot2.1.0.M1  、 jdk1.8+ tomcat8.5+SpringBoot2.1.0.M1

1、在pom.xml文件中,把打包形式jar改为war

<packaging>war</packaging>

2、在pom.xml文件下去除内置tomcat

这里配置有两种方法,一种是

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>      <!-- 移除嵌入式tomcat插件 -->    <exclusions>        <exclusion>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-tomcat</artifactId>        </exclusion>    </exclusions></dependency>

这种方法会直接移除内置tomcat,即本地开发也需要用自己配置的tomcat才行,用main方法运行会报错。可参考最后一步进行修改,使用自己配置的tomcat进行开发调试;

另一种方式是,添加

        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-tomcat</artifactId>            <scope>provided</scope>        </dependency>

这种方法依然可以使用内置的tomcat进行开发调试。

3、添加servlet-api的依赖

添加servlet-api有两种方式,选其一即可

<dependency>    <groupId>javax.servlet</groupId>    <artifactId>javax.servlet-api</artifactId>    <version>3.1.0</version>    <scope>provided</scope></dependency>
<dependency>    <groupId>org.apache.tomcat</groupId>    <artifactId>tomcat-servlet-api</artifactId>    <version>8.0.36</version>    <scope>provided</scope></dependency>

4、修改启动类

原先启动SpringBoot是通过main方法启动的,现在需要让启动类继承SpringBootServletInitializer,并重写configure方法,如

5、在pom.xml的build中添加项目打包后的名称

6、打包部署

(1)、命令行打包

以命令行的形式进入到项目的目录下,输入如下命令(需在环境变量中配置maven路径)

mvn clean package

出现如下图示即说明打包成功

(2)、在eclipse中打包项目

右键点击项目 - Run as - Maven build ,在弹窗中的Goals输入package,点击Run

即可自动打包。打包完成界面与命令行打包一致。

(3)、部署

打包文件在项目路径下的target目录里面,如

放置到tomcat的webapps目录下,即可直接运行,需要注意的是,访问路径需要加上项目名的路径,如下图

7、eclipse中移除内置tomcat,运行项目可能遇到的问题

在第二步的时候,如果采用第一种方法移除了内置tomcat的话,在项目中运行时就需要选择Run on server了。然后选择tomcat服务器(需tomcat7以上),这时候有可能会遇到下面的错误。

出现这个错误的解决方法是,右键点击项目 - properties -  Project Facets ,把Cloud Foundry Standalone Application的勾去掉。

接下去,就可以在eclipse中配置的tomcat上运行项目了。

8、让springboot支持tomcat6的方法

springboot要支持servlet2.5,才可以在tomcat6中运行,让springboot支持servlet2.5需用到spring-boot-legacy,该插件目前只支持到springboot2.0.3版本。

测试环境:tomcat6 + jdk 1.8 +Springboot 1.5.9.RELEASE

(1)、pom.xml中新增插件

在上面1-5步配置完后,继续配置pom.xml。新增spring-boot-legacy依赖

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-legacy</artifactId>    <version>1.1.0.RELEASE</version></dependency>

(2)、在main目录下新建webapp/WEB-INF/web.xml如下图

(3)、复制下面内容到web.xml中,并配置启动类的位置

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">    <context-param>        <param-name>contextConfigLocation</param-name>        <!-- 配置Application启动类的具体位置         如启动类在com.example.DemoApplication.java,则配置如下        -->        <param-value>com.example.DemoApplication</param-value>    </context-param>    <listener>        <listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class>    </listener>    <servlet>        <servlet-name>appServlet</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>            <param-name>contextAttribute</param-name>            <param-value>org.springframework.web.context.WebApplicationContext.ROOT</param-value>        </init-param>        <load-on-startup>1</load-on-startup>    </servlet>    <servlet-mapping>        <servlet-name>appServlet</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping></web-app>

(4)、打包部署,参照上面第6步

到此,导出的war包即可在tomcat6中运行。

Tomcat下部署SpringBoot的更多相关文章

  1. JFinal 项目 在tomcat下部署

    原文:http://my.oschina.net/jfinal/blog/353062 首先明确一下 JFinal 项目是标准的 java web 项目,其部署方式与普通 java web 项目没有任 ...

  2. 在tomcat下部署工程

    xx系统第一期工程完成,今天老大要我去部署系统,从来就没有在tomcat下部署过,一直都是在myeclipse下部署.启动.运行即可,所以这次遇到了几个问题,记录下来. tomcat启动 在安装tom ...

  3. [saiku] 在 Tomcat 下部署 saiku

    上一篇介绍了如何配置免登录[免登录进入管理台] 本文主要是一步一步解释如何在Tomcat下部署saiku,为了让你更好更快的使用. 开始之前,假设你已经比较熟悉数据集市数据库,以及如何建立Mondri ...

  4. 在tomcat下部署两个或多个项目时 log4j和web.xml配置webAppRootKey 的问题(转)

    在tomcat下部署两个或多个项目时 web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为"webapp.root",如下: <!-- 应用路径 ...

  5. log4j和web.xml配置webAppRootKey 的问题(一个tomcat下部署多个应用)

    转自:http://blog.csdn.net/arvin_qx/article/details/6829873 在tomcat下部署两个或多个项目时,web.xml文件中最好定义webAppRoot ...

  6. tomcat下部署了多个项目启动报错java web error:Choose unique values for the 'webAppRootKey' context-param in your web.xml files

    应该是tomcat下部署了多个项目且都使用log4j. <!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root". ...

  7. 一个Tomcat下部署多个项目异常:org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean 的解决方法

    内容简介 在测试服务器上Tomcat下部署两个Spring boot项目,总是一个能启动成功,另一个启动不成功.这两个war包单独部署均能正常启动. 查看日志:启动时报出 org.springfram ...

  8. tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决

    tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决 在开发新项目的时候,有时候为了省时,直接把曾经做过的项目工程A拷贝成改名为B工程,然后再在B工程上进行功能的开发, 此 ...

  9. 在同一个tomcat下部署多个springboot项目时,springboot项目无法正常启动的问题

    这个问题是基于,不使用springboot内置的tomcat会产生(即使用自己的tomcat时). 今天在部署springboot项目的时候遇到了一个问题,怎么部署都访问不了,在网上查了很多原因,什么 ...

随机推荐

  1. 【Educational Codeforces Round 33 B】Beautiful Divisors

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把所有的那些数字打表出来. 逆序枚举就好 [代码] /* 1.Shoud it use long long ? 2.Have you ...

  2. Java基础学习总结(53)——HTTPS 理论详解与实践

    前言 在进行 HTTP 通信时,信息可能会监听.服务器或客户端身份伪装等安全问题,HTTPS 则能有效解决这些问题.在使用原始的HTTP连接的时候,因为服务器与用户之间是直接进行的明文传输,导致了用户 ...

  3. JAVE 视音频转码

    http://blog.csdn.net/qllinhongyu/article/details/29817297

  4. c#下halcon配置

    1.在halcon中写入算子,实现函数过程 比如: read_image(Image,'D:/MyFile/halcon/数字识别/1.jpg') decompose3(Image, ImageR, ...

  5. js进阶 13-11/12 jquery如何实现折叠导航

    js进阶 13-11/12 jquery如何实现折叠导航 一.总结 一句话总结:还是用的slideToggle滑动效果,并且这一个展开时,所有兄弟都关闭. 1.文字缩进怎么设置? 感觉设置margin ...

  6. elementUI upload 对图片的宽高做校验

    很开心今天中午没有吃饭!原因是一直没有解决掉一个小问题,于是一直试错,最后看了下源码才有了点头绪,历时四五个小时才解决掉,有点怀疑自己的能力了,所以写下此文,记录一下今天的囧况!一般情况下遇到问题,自 ...

  7. (转)alter database open resetlogs 的意义

    转自:http://blog.sina.com.cn/s/blog_63216bda0100zblr.html Oracle文档中提到,一旦用备份的控制文件进行数据库恢复,就需要使用resetlogs ...

  8. Seal Report开放数据库报表工具(.Net)

    Seal Report_20160923 概述:开放数据库报表工具(.Net) 简介:Seal-Report提供了一个完整的框架,用于从任何数据库生成日常报告和仪表板.Seal-Report是Micr ...

  9. C#利用反射机制,获取实例的属性和属性值

    C#利用反射,遍历获得一个类的所有属性名,以及该类的实例的所有属性的值 对应某个类的实例化的对象tc, 遍历获取所有属性(子成员)的方法(采用反射): Type t = tc.GetType();// ...

  10. 4、runtime电源管理模式(内核文档runtime_pm.txt有详细描述)

    系统睡眠模型是让整个系统休眠,而runtime是在系统正常工作的时候单独控制某个设备休眠和唤醒 1. runtime PM流程怎样动态地打开或关闭设备的电源?最简单的方法:在驱动程序里,在open函数 ...