Java War包部署组件
War 项目识别策略
平台默认会根据源码根目录下是否有 War 文件来识别为 Java War 项目。
平台编译运行机制
- 预编译处理会探测是否定义了启动命令配置文件 Procfile ,如果未定义会生成默认 War 包启动配置文件;
- 预编译处理完成后,会根据语言类型选择 Java-war 的 buildpack 去编译项目.在编译过程中会安装定义的 JDK 版本,Web 服务;
- 编译完成后会检查是否在平台设置了 Procfile 参数,若配置了会重写启动命令配置文件 Procfile.
War 项目源码规范
在此步骤中,你需要提供一个可用的 Java War 源码程序用来部署在 Rainbond 平台上,此应用程序至少需要满足如下条件:
- 本地可以正常运行的 War 包
- 源码程序必须托管在 gitlab 等相关 git 或者 svn 服务上(5.4 起支持下载压缩包构建)
- 源码程序根路径下必须需要存在 War 文件(即项目已经打成 war 文件)
Procfile 规范
如果项目未定义 Procfile 文件,平台默认会生成默认 Procfile 来运行 War 包。
web: java $JAVA_OPTS -jar ./webapp-runner.jar --port $PORT ./*.war
上述是默认 Procfile,如果需要扩展更多启动参数,可以自定义 Procfile。
web:
和java
之间有一个空格- 文件结尾不能包含特殊字符
- JAVA_OPTS: 平台会根据应用的内存大小,自动设置 Xmx 和 Xms 的值
- PORT: 根据用户在平台设置的端口决定监听,默认监听端口为 5000
当调整了 Web 服务器支持后,打包成 War 需要调整启动命令
- 选择 tomcat 不同版本时
web: java $JAVA_OPTS -jar ./webapp-runner.jar --port $PORT ./*.war
- 选择 jetty 不同版本时
web: java $JAVA_OPTS -jar ./jetty-runner.jar --port $PORT ./*.war
需要配置 context path,可以通过自定义 Procfile 指定 webapp-runner 参数 path - 示例
web: java $JAVA_OPTS -jar ./webapp-runner.jar --path <path路径,示例: /r6d> --port $PORT ./*.war