zoukankan      html  css  js  c++  java
  • springBoot开发的web项目打war包部署到已有的tomcat容器中

    网上的博客好多坑,还是要自己尝试解决下才可以呀!!!

    这个文章很多,其中介绍了很多修改方式,我这里只写我遇到的坑。

    一、修改pom文件

    1、修改打包方式

    2、设置打包文件名

    3、修改依赖:

      <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>

    4、添加依赖:

     <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>

    这里有人说可以用

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>

    替换,我试了,不行,我这里启动会找不到启动类,我猜是因为没有找到SpringBootServletInitializer实现类

    二、修改启动类

    extends SpringBootServletInitializer,重写configure方法
    package com.thc.myBlog;
    
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
    import org.springframework.cache.annotation.EnableCaching;
    @MapperScan("com.thc.myBlog.dao")
    @EnableCaching
    @SpringBootApplication
    public class MyBlogApplication extends SpringBootServletInitializer {
    
        public static void main(String[] args) {
            SpringApplication.run(MyBlogApplication.class, args);
        }
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
            return application.sources(MyBlogApplication.class);
        }
    
    }

    三、打包,部署

    1、使用maven命令打包 maven clean -U package (为了方便,也可以直接使用idea中的maven组件打包,双击就可以,超方便)

    2、找到target文件夹下打包成功的blog.war包,复制到tomcat的webapp即可。

    四、启动tomcat

     看到spring启动标识才是真的应用部署成功。

    ================我遇到的问题:

    开始我没有引入javax.servlet-api包,而是信了一篇博文,用引入pring-boot-starter-tomcat包代替,结果tomcat启动成功了,我的应用也部署成功了,但是却不能访问

    我尝试了通过配置tomcat的conf/tomcat-users.xml文件登录应用管理界面查看应用,确认部署成功

    <role rolename="manager-gui"/>
    <user username="admin" password="admin" roles="manager-gui"/>

    但是tomcat启动的时候并没有报错,我想到了之前看到有人引入了servlet-api的包,尝试下,确实是这样的。

    引入javax.servlet-api包确实成功了,但是却不能访问login.html页面,view层我使用的是thymeleaf,报错是我用了他的内置对象的位置

    <p class="mt-10 mb-3 font-weight-normal" >服务器端口号:
    <font color="red" th:text="${#request.localPort}"></font></br>
    sessionid:<font color="red" th:text="${session.id}"></font></p>

    很奇怪,request前面要求必须添加#,session对象前面一定不能使用#。但其实我使用内置tomcat的时候两个对象前面我都加了#,可以正常读取。

    具体原因我没有查文档,有时间可以看看官方文档怎么说的。

     截图可以看到,sessionid根本就没有读到,

     今天不想弄了,改天再看吧,搜了几篇很好的文章,可以看下

    https://blog.csdn.net/liubin5620/article/details/80481848
    https://my.oschina.net/GinkGo/blog/1501622

    https://blog.csdn.net/ljf12138/article/details/103737535

  • 相关阅读:
    spring boot 启动类 添加组件
    spirng boot 添加过滤器
    spring cloud spring-hystrix 缓存
    spring cloud spring-hystrix
    spring cloud spirng整合feign
    spring cloud feign
    cxf-client
    spring cloud客户端启用负载均衡
    spring cloud 负载均衡自定义
    VS2013 配置pthread
  • 原文地址:https://www.cnblogs.com/tianhaichao/p/12795361.html
Copyright © 2011-2022 走看看