将 SpringBoot 应用程序打包为 EAR 并部署到本地 TomEE 7 实例。
部署后,托管在上下文路径下TOMEE/my-app-api
从 TOMEE/my-app-api/index.html 正确提供 webapp 文件夹中的静态 index.html 页面
我有一个RestController
映射到的单个 GET 端点/api/country
当我尝试拨打RestController
via时,TOMEE/my-app-api/api/country
我得到一个 404。
如果我从嵌入式 Tomcat 实例运行相同的应用程序并调用RestController
via,TOMCAT/api/country
我会得到成功的响应。
为了让 SpringBoot 在这个上下文路径下托管,我需要配置什么额外的东西吗?
EAR Gradle 任务
apply plugin: 'ear'
version = '1.0.0-SNAPSHOT'
ear {
archiveName = 'git rev-parse --short HEAD'.execute().text.trim() + "-$version" + '-service.ear'
baseName = 'git rev-parse --short HEAD'.execute().text.trim()
version= "-$version" + '-service'
deploymentDescriptor {
displayName = 'Service API'
webModule('service-api.war', 'service-api')
}
}
dependencies{
deploy project(path: ':service-api', configuration: 'archives')
deploy project(path: ':service-data', configuration: 'archives')
deploy project(path: ':service-rules', configuration: 'archives')
}
应用类
@SpringBootApplication
public class ServiceApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(ServiceApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(ServiceApplication.class, args);
}
}