Spring Boot JAR
列出归档结构:
jar tf application.jar | head
Spring Boot 可执行 JAR 的应用类和资源位于 BOOT-INF/classes/,依赖位于 BOOT-INF/lib/:
jar tf application.jar | rg '^BOOT-INF/(classes|lib)/' | head
内置配置文件:
jar tf application.jar \
| rg '^BOOT-INF/classes/application[^/]*\.(properties|ya?ml)$'
读取配置:
unzip -p application.jar BOOT-INF/classes/application.yml
启动命令中的 --spring.config.location、--spring.config.additional-location、-Dspring.config.location 优先反映外置配置位置:
ps -eo pid,args | rg '[j]ava'
java -Dspring.config.location=/srv/app/config/ \
-jar /srv/app/application.jar \
--spring.profiles.active=prod
该进程使用 /srv/app/config/ 下的外置配置,并启用 prod profile。
外置 Tomcat
定位 org.apache.catalina.startup.Bootstrap 进程:
ps -eo pid,args | rg '[o]rg.apache.catalina.startup.Bootstrap'
实际记录中的关键参数整理后如下:
java \
-Djava.util.logging.config.file=/srv/tomcat/conf/logging.properties \
-classpath /srv/tomcat/bin/bootstrap.jar:/srv/tomcat/bin/tomcat-juli.jar \
-Dcatalina.base=/srv/tomcat \
-Dcatalina.home=/srv/tomcat \
-Djava.io.tmpdir=/srv/tomcat/temp \
org.apache.catalina.startup.Bootstrap start
运行实例目录由 catalina.base 给出:
/srv/tomcat/conf/
/srv/tomcat/logs/
/srv/tomcat/webapps/
/srv/tomcat/temp/
catalina.home 是 Tomcat 程序目录;多实例部署时,catalina.base 与 catalina.home 可以不同。
参考
Spring Boot Externalized Configuration
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。