gpt4 book ai didi

spring-boot - 在 catalina.bat 文件中设置属性与在 setenv.bat 文件中设置属性有什么区别

转载 作者:行者123 更新时间:2023-12-04 17:43:59 29 4
gpt4 key购买 nike

我想在 tomcat 上部署时在 war 文件之外设置 application.properties 文件,这是我的观察

1. 当我将 jvm 属性设置为

spring.config.location=C:/Users/user_name/Documents/Softwares/apache-tomcat-8.0.53-windows-x64/apache-tomcat-8.0.53/webapps/config/ 

在 catalina.properties 文件中.. tomcat 无法理解它并在读取 application.properties 文件中定义的一个位置属性时抛出运行时错误(基本上它无法解析位置)

但是当我如下设置配置文件时

spring.profiles.active=dev

并且配置文件被正确拾取。

那么,设置这两个属性的最大区别是什么。我也相信这些是 spring boot 在运行时作为环境属性的 jvm 属性。我在这里正确吗?

2. 当我在名为 setenv.sh 的新文件中设置相同的 spring.config.location 时,如下所示

set JAVA_OPTS=-Dspring.config.location=C:/Users/user_name/Documents/Softwares/apache-tomcat-8.0.53-windows-x64/apache-tomcat-8.0.53/webapps/config/

意味着将属性设置为 java 系统变量,这次 spring boot 应用程序正确地选择了它。

那么,通过 catalina.properties 文件设置属性与通过 setenv.bat 文件设置属性的最大区别是什么。

请指教

最佳答案

  1. 属性文件不是文本文件。它有自己的语法。参见类 java.util.Properties 的 Javadoc [1] [2]供引用。

    例如':'转义为':','\'转义为'\'。

    (转义“:”在属性的键中很重要。我不确定值中是否需要它。也许您的值中还有其他一些错误。)

    您可以配置org.apache.catalina.startup.VersionLoggerListener (在 server.xml 中)记录系统属性的实际值,如 Tomcat 和您的 Web 应用程序所见。属性是 logProps="true" [3] .

  2. setenv.shsetenv.bat脚本为java程序的命令行生成选项。

    catalina.properties文件由 Tomcat 引导进程处理。它发生得相当早(在构建 Tomcat 类加载器层次结构之前),但对于某些属性来说,这种时间差异很重要。

    例如,配置 java.util.logging 的属性应在 setenv.sh 中配置日志记录 API而不是在 catalina.properties文件。

关于spring-boot - 在 catalina.bat 文件中设置属性与在 setenv.bat 文件中设置属性有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53059282/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com