springboot+内置改为外置tomcat

1.pom.xml

   springboot项目利用的是自己内置的tomcat,这边就是不依赖内置的tomcat,将其编译的作用域设置为provided

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

改打包方式 war

    <groupId>com.nsoftgroupId>
    <artifactId>gkzpartifactId>
    <version>0.0.1-SNAPSHOTversion>
    war
    <name>gzy-gkzpname>
    <description>广职院-公开招聘系统网站description>

去除内嵌tomcat (经验证,这个不去除也不会受影响)

        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
            <exclusions>
                <exclusion> 
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-starter-loggingartifactId>
                exclusion>
                
                    org.springframework.boot
                    spring-boot-starter-tomcat
                
            exclusions>
        dependency>

 

 

 

2.改造启动类

因为springboot 自己能认识自己的启动项,而外部tomcat是不认识的,所以添加启动类,从启动类中传入SpringBoot应用的主程序

故新建启动类:com.nsoft.gkzp.ServletInitializer.java

package com.nsoft.gkzp;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;


public class ServletInitializer extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        //传入SpringBoot应用的主程序
        return application.sources(com.nsoft.gkzp.GzyGkzpApplication.class);
    }

}

路径截图如下:

springboot+内置改为外置tomcat_第1张图片

 

 

 

3.过滤器修正

在实际操作中,经过以上1、2步骤后,tomcat启动可正常运行,但过滤器不生效了。需在过滤器添加@Configuration 注解即可。但如果使用内置tomcat,不能添加@Configuration 注解,否则启动时报错。

 

 

 

4.tomcat7版本修正

tomcat是1.7的话启动时会报错误:Caused by: java.lang.NoClassDefFoundError: javax/el/ELManager

这是因为:tomcat提供的el-api 和项目里面的el-api.jar冲突;这时候你需要去找到自己本机上用的el-api的版本,copy到tomcat的lib目录下,覆盖原来的jar包

 

 

参考:https://blog.csdn.net/qq_35668387/article/details/87287949

你可能感兴趣的:(springboot+内置改为外置tomcat)