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
<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的更多相关文章
- JFinal 项目 在tomcat下部署
原文:http://my.oschina.net/jfinal/blog/353062 首先明确一下 JFinal 项目是标准的 java web 项目,其部署方式与普通 java web 项目没有任 ...
- 在tomcat下部署工程
xx系统第一期工程完成,今天老大要我去部署系统,从来就没有在tomcat下部署过,一直都是在myeclipse下部署.启动.运行即可,所以这次遇到了几个问题,记录下来. tomcat启动 在安装tom ...
- [saiku] 在 Tomcat 下部署 saiku
上一篇介绍了如何配置免登录[免登录进入管理台] 本文主要是一步一步解释如何在Tomcat下部署saiku,为了让你更好更快的使用. 开始之前,假设你已经比较熟悉数据集市数据库,以及如何建立Mondri ...
- 在tomcat下部署两个或多个项目时 log4j和web.xml配置webAppRootKey 的问题(转)
在tomcat下部署两个或多个项目时 web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为"webapp.root",如下: <!-- 应用路径 ...
- log4j和web.xml配置webAppRootKey 的问题(一个tomcat下部署多个应用)
转自:http://blog.csdn.net/arvin_qx/article/details/6829873 在tomcat下部署两个或多个项目时,web.xml文件中最好定义webAppRoot ...
- tomcat下部署了多个项目启动报错java web error:Choose unique values for the 'webAppRootKey' context-param in your web.xml files
应该是tomcat下部署了多个项目且都使用log4j. <!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root". ...
- 一个Tomcat下部署多个项目异常:org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean 的解决方法
内容简介 在测试服务器上Tomcat下部署两个Spring boot项目,总是一个能启动成功,另一个启动不成功.这两个war包单独部署均能正常启动. 查看日志:启动时报出 org.springfram ...
- tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决
tomcat下部署两个工程时,只有一个可以访问,另一个出现404错误,该如何解决 在开发新项目的时候,有时候为了省时,直接把曾经做过的项目工程A拷贝成改名为B工程,然后再在B工程上进行功能的开发, 此 ...
- 在同一个tomcat下部署多个springboot项目时,springboot项目无法正常启动的问题
这个问题是基于,不使用springboot内置的tomcat会产生(即使用自己的tomcat时). 今天在部署springboot项目的时候遇到了一个问题,怎么部署都访问不了,在网上查了很多原因,什么 ...
随机推荐
- vs2015 EF code first 问题待解决
在vs 2013 上可以成功ef 生成代码.EF power Tools 安装在vs 2015 :一般不可安装, 把扩展名改成zip,解压缩. 打开extension.vsixmanifest文件 找 ...
- POJ 3061 Subsequence 二分或者尺取法
http://poj.org/problem?id=3061 题目大意: 给定长度为n的整列整数a[0],a[1],--a[n-1],以及整数S,求出总和不小于S的连续子序列的长度的最小值. 思路: ...
- Java Callable Future Example(java 关于Callable,Future的例子)
Home » Java » Java Callable Future Example Java Callable Future Example April 3, 2018 by Pankaj 25 C ...
- 基于AndFix的热修复 成功后简单的总结总结错失
首先了解热修复是什么东西?? 就我自己简单的理解:就是不须要又一次打包 公布到市场 然后再让用户又一次下载就能够把一些小bug和需求通过补丁的形式进行改动. 然后如今的热修复方式有大致的三种: 1.d ...
- Oracle Web链接客户端
TreeSoft数据库管理系统 http://www.treesoft.cn
- Linux下的lds链接脚本简介(二)
七. SECTIONS命令 SECTIONS命令告诉ld如何把输入文件的sections映射到输出文件的各个section: 如何将输入section合为输出section; 如何把输出section ...
- ZOJ 2421 Recaman's Sequence
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1421 题目大意: 定义a^m为 a^m = a^(m-1) - m 如果a^ ...
- 【BZOJ 2119】股市的预测
[链接]h在这里写链接 [题意] 给你一个长度为n的数组a[] 设b[i] = a[i+1]-a[i]; 然后让你在b[i]里面找ABA的形式. 这里B的长度要求为m; ...
- 黑马程序猿——15,String,StringBuffer,基本数据类型包装对象
------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...
- Gora快速入门 分类: C_OHTERS 2015-01-30 09:55 465人阅读 评论(0) 收藏
概述 Gora是apache的一个开源项目. The Apache Gora open source framework provides an in-memory data model and pe ...