如何将JHipster 6.8.0微服务项目从OpenShift迁移部署至Tomcat服务器
JHipster 6.8.0 微服务迁移至Tomcat部署实操方案
基础项目适配修改
- 调整打包配置
Maven项目:修改pom.xml的<packaging>标签值从jar改为war,新增Tomcat依赖配置:
Gradle项目:修改<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>build.gradle,新增war插件声明,调整Tomcat依赖范围:apply plugin: 'war' ... providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' - 启动类适配
修改项目主启动类,继承SpringBootServletInitializer,重写configure方法,示例如下:@SpringBootApplication public class YourServiceApp extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(YourServiceApp.class); } public static void main(String[] args) { SpringApplication.run(YourServiceApp.class, args); } }
JHipster 特有配置调整
- 上下文路径配置:在
application-*.yml中新增server.servlet.context-path配置,值为你计划部署的Tomcat上下文路径,例如部署到/order-service则配置对应值,避免静态资源、接口路径404。 - 前端资源适配:修改前端打包配置
webpack.common.js中的publicPath参数,值和上文的上下文路径保持一致,例如publicPath: '/order-service/'。 - 内嵌容器配置清理:删除或注释
application-*.yml中所有server.tomcat、server.undertow开头的内嵌容器专属配置,避免和外部Tomcat冲突。 - 环境变量适配:原OpenShift中注入的环境变量、配置参数,可在Tomcat的
bin/setenv.sh(Linux)或bin/setenv.bat(Windows)中配置,保持和原有环境参数一致即可。
打包与部署验证
- 执行打包命令:Maven使用
mvn clean package -P{你的启用profile,如prod},Gradle使用./gradlew clean bootWar -P{你的启用profile,如prod},打包完成后在target(Maven)或build/libs(Gradle)目录获取生成的war包。 - Tomcat版本要求:JHipster 6.8.0对应Spring Boot 2.2.x版本,必须使用Tomcat 9.0.x版本部署,禁止使用Tomcat 10及以上版本,Tomcat 10使用Jakarta EE规范,与当前版本依赖的Java EE规范不兼容。
- 部署操作:将war包放入Tomcat的
webapps目录,启动Tomcat,查看日志确认无报错,JHipster启动标识正常输出即为部署成功。
微服务部署额外注意事项
- 注册中心配置:若使用JHipster Registry、Consul等注册中心,需确认配置中注册中心地址正确,服务实例上报的IP、端口为当前Tomcat的IP和端口。
- 多服务部署规则:三个微服务部署到同一个Tomcat实例时,需保证三个服务的上下文路径完全不同;部署到不同Tomcat实例时,需修改每个Tomcat的HTTP、SHUTDOWN、AJP端口,避免端口冲突。
内容的提问来源于stack exchange,提问作者Muhammad Yawar
相关产品推荐
相关产品推荐

