Java 服务配置文件定位

  1. Spring Boot JAR
  2. 外置 Tomcat
  3. 参考

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.basecatalina.home 可以不同。

参考

Spring Boot Nested JARs

Spring Boot Externalized Configuration


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:Java 服务配置文件定位

字数:285

本文作者:

发布时间:2023-05-30, 11:23:00

最后更新:2026-08-26, 14:57:00

原始链接:https://cnlnn.pages.dev/posts/java-service-config-location/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。