您的位置:首页 > 运维架构 > Tomcat

spring boot web项目部署到外部tomcat

2017-11-26 21:31 871 查看
spring boot项目打成war包部署到外部tomcat

部署到外部tomcat 在打包之前需要先将spring boot内置的tomcat去除

去除内置tomcat有2种

1:<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
2: 不使用第一种可直接在pom文件中直接添加tomcat的信息,但是需要将使用的范围定义成provided

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
有的项目可能需要自己添加java-servlete-api的信息

去除tomcat相关jar之后,需要新建一个类实现SpringBootServletInitializer 重写configure方法

@SpringBootApplication
public class ServleteInitService extends SpringBootServletInitializer {

@Override
protected SpringApplicationBuilder configure(
SpringApplicationBuilder application) {
//App类为springboot 项目的启动类
return application.sources(App.class);
}
打包如下:

myeclipse maven 命令 package 或者install 都能打包,区别在与package 会在target目录下生产打包文件,install会在本地maven库中生产打包文件

将生成的war 放到tomcat webapps目录下,一般将XXX.war改名成ROOT.war

可能遇到的问题:

1:如果打的war 部署到tomcat7或者版本更低的tomcat中 可能会导致项目无法启动,网上有人说可以spring boot默认支持的是8 所以需要修改pom中tomcat的版本,添加

<properties>
<tomcat.version>7.0.69</tomcat.version>
</properties>但是 我这边配置了之后并不好用,所以无奈只能换成tomcat8 之后启动成功:
2:有时候打war时 可能自己的一些静态文件未能打到war中,导致访问页面时出现找不到js,css等 正常情况下默认的是打包java/main/resources 文件下所有的文件,如果未能打到war中 可尝试使用<resources>标签指定添加文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  springboot tomcat