Tomcat下部署SpringBoot

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

war


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

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

org.springframework.bootspring-boot-starter-web                              org.springframework.boot            spring-boot-starter-tomcat            

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

另一种方式是,添加

                    org.springframework.boot            spring-boot-starter-tomcat            provided        

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


3、添加servlet-api的依赖

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

    javax.servlet    javax.servlet-api    3.1.0    provided
    org.apache.tomcat    tomcat-servlet-api    8.0.36    provided


4、修改启动类

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

Tomcat下部署SpringBoot_第1张图片


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

Tomcat下部署SpringBoot_第2张图片


6、打包部署

(1)、命令行打包

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

mvn clean package

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

Tomcat下部署SpringBoot_第3张图片


(2)、在eclipse中打包项目

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

Tomcat下部署SpringBoot_第4张图片

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


(3)、部署

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

Tomcat下部署SpringBoot_第5张图片

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

Tomcat下部署SpringBoot_第6张图片


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

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

Tomcat下部署SpringBoot_第7张图片

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

Tomcat下部署SpringBoot_第8张图片

接下去,就可以在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依赖

    org.springframework.boot    spring-boot-legacy    1.1.0.RELEASE

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

Tomcat下部署SpringBoot_第9张图片

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

            contextConfigLocation                com.example.DemoApplication                org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener                appServlet        org.springframework.web.servlet.DispatcherServlet                    contextAttribute            org.springframework.web.context.WebApplicationContext.ROOT                1                appServlet        /    

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

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

你可能感兴趣的:(Tomcat下部署SpringBoot)