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 "%r" %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 "%r" %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即可。