一、环境准备
1.1 基础环境要求
- JDK 8+(推荐JDK 11)
- Apache Tomcat 9.x+
- Maven 3.6+
# 验证环境
java -version
mvn -v
catalina.sh version
二、传统Java Web项目部署
2.1 项目结构要求
my-webapp/
├─ src/
│ └─ main/
│ ├─ java/ # 源代码
│ ├─ resources/ # 配置文件
│ └─ webapp/ # WEB-INF/web.xml
├─ pom.xml
2.2 打包与部署流程
- 生成WAR包
mvn clean package
生成的target/my-webapp.war
即为部署文件
- 部署到Tomcat
# 方式1:直接拷贝到webapps目录
cp target/my-webapp.war ${TOMCAT_HOME}/webapps/
# 方式2:通过Manager应用部署
访问 http://localhost:8080/manager/html
上传WAR文件部署
- 访问验证
http://localhost:8080/my-webapp/your-endpoint
2.3 关键配置项
<!-- pom.xml 必须包含 -->
<packaging>war</packaging>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
三、Spring Boot项目部署
3.1 两种部署模式对比
部署方式 | 启动命令 | 特点 | 适用场景 |
---|
内嵌Tomcat | java -jar app.jar | 开箱即用 | 微服务/快速部署 |
外置Tomcat | 部署WAR到Tomcat | 资源复用 | 传统环境适配 |
3.2 外置Tomcat部署步骤
3.2.1 修改pom.xm
<packaging>war</packaging>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope> <!-- 排除内嵌Tomcat -->
</dependency>
3.2.2 修改启动类
<packaging>war</packaging>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope> <!-- 排除内嵌Tomcat -->
</dependency>
3.2.3 构建WAR包
mvn clean package -DskipTests
3.2.4 部署到Tomcat
cp target/springboot-app.war ${TOMCAT_HOME}/webapps/
3.2.5 访问验证
http://localhost:8080/springboot-app/actuator/health
3.3 内嵌Tomcat运行
# 直接运行JAR
java -jar springboot-app.jar
# 带参数运行
java -jar springboot-app.jar \
--server.port=8081 \
--spring.profiles.active=prod
四、配置差异对比
4.1 配置文件对比
配置项 | 传统项目 | Spring Boot |
---|
端口设置 | server.xml Connector配置 | application.properties |
上下文路径 | webapps目录名或context.xml | server.servlet.context-path |
静态资源 | webapp目录 | src/main/resources/static |
日志配置 | log4j.properties | logback-spring.xml |
4.2 项目结构对比
传统项目结构 Spring Boot结构
├─ src/main/webapp/ ├─ src/main/resources/
│ ├─ WEB-INF/ │ ├─ static/
│ │ └─ web.xml │ ├─ templates/
│ └─ index.jsp │ └─ application.properties
五、运维监控
5.1 通用监控方式
# 查看实时日志
tail -f ${TOMCAT_HOME}/logs/catalina.out
# 健康检查(Spring Boot专属)
curl http://localhost:8080/actuator/health
5.2 内存调优建议
# 传统项目JVM参数(setenv.sh)
export JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC"
# Spring Boot启动参数
java -Xms512m -Xmx1024m -jar app.jar
六、常见问题解决方案
6.1 404错误排查
- 检查war包是否解压成功
- 验证上下文路径是否正确
- 确认控制器映射路径
- 查看Tomcat的localhost日志
6.2 类加载冲突
<!-- 传统项目解决依赖冲突 -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
七、部署方式选择建议
考量因素 | 传统项目部署 | Spring Boot部署 |
---|
启动速度 | 慢(依赖Tomcat启动) | 快(独立进程) |
环境依赖 | 需要预装Tomcat | 仅需JRE |
配置复杂度 | 高(多配置文件) | 低(统一properties) |
集群部署 | 需要外部协调 | 内置健康检查机制 |
微服务适配 | 困难 | 天然支持 |