【问题标题】:Setting Global Environmental Variables in Linux (Red Hat) for Java Web Application in Tomcat在 Linux (Red Hat) 中为 Tomcat 中的 Java Web 应用程序设置全局环境变量
【发布时间】:2015-04-17 18:18:56
【问题描述】:

我们已经将应用程序中的所有属性都外部化了,并通过设置环境变量来读取它,就像这样..

<bean id="propertyPlaceholderConfigurer" class="org.jasypt.spring31.properties.EncryptablePropertyPlaceholderConfigurer">
    <constructor-arg ref="configurationEncryptor" />
    <property name="ignoreUnresolvablePlaceholders" value="true"/>
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
    <property name="searchSystemEnvironment" value="true"/>
    <property name="locations">
        <list>
            <value>file:${ENV_PROPS}/config/*.properties</value>
        </list>
    </property>
</bean> 

以上代码适用于 Windows 和 Mac,即环境变量 ENV_PROPS 已正确解析。

但它无法在 Linux (Red Hat) 中解决。我试过设置这样的环境变量..

# /opt/application/config/database.properties is a valid path     
export ENV_PROPS=/opt/application 

在 Linux 中的以下位置。

  1. /etc/profile.d/env_vars.sh

  2. /etc/profile

  3. /etc/bashrc

  4. /tomcat/conf/setenv.sh(为此,java 代码 System.getenv 有效,但 xml 无法解析)

【问题讨论】:

  • 属于用户“运行”tomcat的~/.bashrc和~/.bash_profile呢?

标签: java linux spring tomcat environment-variables


【解决方案1】:

原来是在 linux/tomcat 中加载 applicationContext.xml 的顺序有问题,而不是环境变量问题。

我们的应用程序中有多个上下文文件,仅在主 applicationContext.xml(也在 web.xml 中定义)中应用上述 bean 并没有帮助。

我们必须像这样显式地将上述 bean 作为资源导入到多个 xml 文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    相关资源
    最近更新 更多