java 在Tomcat中定义应用程序的环境变量,不在部署范围内

92dk7w1h  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(127)

我需要为在Apache Tomcat 10.1中运行的Java Web应用程序提供配置文件路径
必须在部署之外设置配置路径。它是部署应用程序的计算机/阶段的属性。而不是应用程序的特性。因此,它**不能在web.xml**中设置。
例如/srv/myapp/prod/config.iniC:\EclipseDeveloperOnWindows\config.ini
我考虑了很多选择:

  • 操作系统环境变量MYAPPCONFIG,如PATHJAVA_HOME:独立于我的应用程序,甚至独立于Tomcat容器。如果我想以同一个系统用户的身份运行具有不同配置的多个发行版/Tomcat,可能会容易出错。
  • CATALINA_OPTS中作为Tomcat命令行选项的Java系统属性,例如-DmyApp.config=/some/path.ini
  • <CATALINA_BASE>\conf\server.xml中的Tomcat上下文参数。这样,每个Tomcat示例(一个CATALINA_HOME,多个CATALINA_BASE)都可以为config path属性定义一个 * 不同的 * 值。(我必须在web.xml中包含对server.xml上下文参数的引用吗?我可以从ServletContext中查找它吗?)
  • <CATALINA_BASE>\conf\server.xml中的Tomcat环境条目-Tomcat上下文参数与Tomcat环境条目的区别/优缺点是什么?(我可以从ServletContext中查找吗?)
  • 其他的东西,也许可以用JNDI查找?

我错过了一些选择吗?推荐哪一种?你使用哪种方法是出于什么原因?

zxlwwiss

zxlwwiss1#

将配置放入Context中可能是最好的选择。请注意,Contexts可以用各种方式定义,而不仅仅是在server.xml中。
有关详细信息,请参见Tomcat 10.1文档中的定义上下文。
对于我们的产品,相同的war文件被部署到登台环境和生产环境。两个上下文描述符(每个环境一个)详尽地描述了环境之间的差异。

相关问题