spring boot 项目打成war,丢入tomcat独立运行

时间:2023-03-08 19:53:16
spring boot 项目打成war,丢入tomcat独立运行

小插曲:通过cmd运行startup.bat,cmd界面显示乱码

解决方法:进入tomcat目录,conf文件夹,用编辑器打开logging.properties

将java.util.logging.ConsoleHandler.encoding = UTF-8 改为 GBK

spring boot 项目打成war,丢入tomcat独立运行

然后就正常显示日志了

spring boot 项目打成war,丢入tomcat独立运行

下面示例打包war部署发布

首先,为tomcat修改一个独立的端口,防止和其它端口冲突

进入tomcat目录,打开conf文件夹,打开server.xml

三个地方都改下,比较靠谱

原8080,这里改成了8081,特别还加了URIEncoding="utf-8"编码格式

<!-- A "Connector" represents an endpoint by which requests are received
and responses are returned. Documentation at :
Java HTTP Connector: /docs/config/http.html
Java AJP Connector: /docs/config/ajp.html
APR (HTTP/AJP) Connector: /docs/apr.html
Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
-->
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="utf-8"/>

原8009,这里改成了8091

<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8091" protocol="AJP/1.3" redirectPort="8443" />

这里改成了8092

<Server port="8092" shutdown="SHUTDOWN">

工程打成war包,放入tomcat目录webapps文件夹下(注意:如果webapps下附带的小例子过程都删空了,通过IP:端口就访问不到tomcat界面了,报404,不过也可以删除,通过ip:端口/app文件夹名字访问自己的工程)

spring boot 项目打成war,丢入tomcat独立运行

CMD切到tomcat的bin目录,执行startup.exe

spring boot 项目打成war,丢入tomcat独立运行

spring boot 项目打成war,丢入tomcat独立运行

项目启动后,通过ip:端口/webapps下的过程文件夹名字 访问项目

这里:localhost:8081/demo-0.0.1-SNAPSHOT

spring boot 项目打成war,丢入tomcat独立运行

tomcat部署启动就这样了,然后示例下springboot打war包的一些步骤

在pom里添加<packaging>war</packaging>

spring boot 项目打成war,丢入tomcat独立运行

在pom的web依赖,排除springboot内置tomcat

spring boot 项目打成war,丢入tomcat独立运行

在springboot入口类同层目录新建一个类

SpringBoot项目必须实现SpringBootServletInitializer接口,覆盖其configure()方法,替代普通入口,才能让外部容器运行war包
spring boot 项目打成war,丢入tomcat独立运行
package com.example.demo;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/**
* SpringBoot项目必须实现SpringBootServletInitializer接口,覆盖的configure()方法
* 才能让外部容器运行Spring Boot项目,主要在不用内嵌服务器,将项目打成war包在外部服务器运行的情况
* 这里才是入口
* @author kyoxue
* @date 2019年10月16日
*/
public class ServletInitializer extends SpringBootServletInitializer{ @Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// TODO Auto-generated method stub
return builder.sources(DemoApplication.class);
}
}

一切准备就绪,右键工程,run as -----  maven clean  ,run as ----- maven install

控制台找到这里:

spring boot 项目打成war,丢入tomcat独立运行

打开目录,D:\work_maven\com\example\demo\0.0.1-SNAPSHOT\找到demo-0.0.1-SNAPSHOT.war,这个就是打成的war包,丢入tomcat的webapps文件夹下面部署即可。

spring boot 项目打成war,丢入tomcat独立运行