springboot打war包并部署到外部tomcat中

0.配置tomcat的server.xml文件

<!-- 原始tomcat配置文件,此时做外部tomcat部署时,项目的访问路径需要加上项目的文件名路径:localhost:8080/backend-partner/index -->
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">  
   <!-- SingleSignOn valve, share authentication between web applications
         Documentation at: /docs/config/valve.html -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->
    
    <!-- Access log processes all example.
         Documentation at: /docs/config/valve.html
         Note: The pattern used is equivalent to using pattern="common" -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

<!-- =====================================第二种方式================================== -->
<!-- 有时会修改配置,直接添加Context配置,为了让访问路径去除项目名的,此时需要将host标签中的appBase属性赋值为空,避免出现启动项目两次的情况 -->
<Host name="localhost"  appBase=""
            unpackWARs="true" autoDeploy="true">  
   <!-- SingleSignOn valve, share authentication between web applications
         Documentation at: /docs/config/valve.html -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->
    
  	<Context path="" docBase="D:\Program Java\apache-tomcat-8.5.27\webapps\backend-partner" reloadable="false" />  
    <!-- Access log processes all example.
         Documentation at: /docs/config/valve.html
         Note: The pattern used is equivalent to using pattern="common" -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log" suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

1.修改pom文件:

<!--添加或修改标签packaging:-->
<packaging>war</packaging>

<!--添加编译插件 -->
<build>
     <!-- 在使用外部Tomcat部署访问的时候,application.properties(application.yml)中配置的server.portserver和context-path将失效,请使用tomcat的端口,tomcat,webapps下项目名进行访问。为了防止应用上下文所导致的项目访问资源加载不到的问题,最好指定打成的war包名称 -->
    <finalName>war包名称</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>


2.添加启动初始化类

public class CityServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(CityApplication.class);
    }
}

执行打包命令,将war包放入到tomcat的webapps中,启动tomcat

3.注意点:使用的springboot版本是2.x,tomcat配置为第二种方式,并没有将springboot内置tomcat排除,或者指定为provided。

4.备份记录剔除tomcat的备份记录–增加pom.xml的修改:

<!--springWeb-->
<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>
    <!--或者指定scope等级-->
    <scope>provided</scope>
</dependency>

5.设置war包的启动参数:

如果使用jar运行项目的话,启动参数可以直接添加到启动命令后面
比如:java -jar xxx.jar --server.port=8080 --Dspring.profiles.active=prod
如果使用war运行项目的话,启动参数可以添加到tomcat的bin文件下的catalina文件中(.sh对应Linux系统,.bat对应Win系统)
找到设置JAVA_OPTS的位置,在原有的设置之后添加一行自定义的参数设置即可,比如.bat中:
默认设置是:set "JAVA_OPTS=%JAVA_OPTS% -Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
添加的启动参数是:set "JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=test"
在.sh中的默认设置如下:
if [ -z "$JSSE_OPTS" ] ; then
  JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
fi
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"
添加一行:JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=test"
保存后,重新启动tomcat即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值