Springboot打war包部署到tomcat中!

 

查询Springboot项目打war包的方法,在网上有很多,但是主要的思路都是将springboot中内置的tomcat去掉,重写启动主方法,多查查总有一款是适合你的,我就是查了大概一周!!!困惑了一周!!!!也看到许多人问也是按照网上的方法去设置依赖,重写方法,为什么不好用呢,我刚开始也是这样,但是我新建了一个小的springboot项目去试了一下网上的方法,是可以使用,下面写出需要更改的地方。

去掉内置的tomcat,有两个方法:

方法一、这个亲测好用

war


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

方法二、这个我没有试验


            org.springframework.boot
            spring-boot-starter-web
            <!– 移除嵌入式tomcat插件 –>
            
                
                    org.springframework.boot
                    spring-boot-starter-tomcat
                
            
        

 因为springboot是没有web.xml文件的,所以需要一下设置。你也可以试试给springboot添加web.xml。


        learnspringboot 
                
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            

            
                maven-war-plugin
                2.6
                
                    
                    false
                
            
        
    

下面重写启动类: 

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(DemoApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

以上就可以将springboot项目进行打war包部署到tomcat中,但这个时候我自己的问题并没有解决,我出现了很多小伙伴说的项目部署到tomcat中可以启动,没有任何错误,但是启动报错404,空白页,访问不了等等,我的问题是这么解决的,我是访问路径问题,我的数据库连接只能识别/login,但是war包访问需要加上war包名称,比如http://localhost:8080/learnspringboot/login,这样我自己的拦截器在识别路径的时候识别的是/learnspringboot/login,那就找不到登录信息,就会跳到/error界面,问题分析原因都是通过对比tomcai启动war的后台日志与在idea中启动springboot的后台日志,以及代码发现的。所以我只要让我访问的路径是http://localhost:8080/login 那么就是访问不需要加war名称,那么就在tomcat的server.xml中进行设置。

我的是这么设置,可能跟网上的不太一样,我不太懂区别,但是我自己的我用着好用哈。


		
        
        
        

        
        

      

然后我的就可以访问成功,如果大家遇到相似的问题,大家一定要耐心看区别,因为网上查的部署方法,是有好用的,可能你的项目本身建设影响了你的访问,如果对大家有帮助那就太好了,因为我在这憋了太久了,如果有不对请指出,本人也只是个新手,本文也是参考了好多大神的帖子。。。

你可能感兴趣的:(springboot,springboot,war包)