【问题标题】:Options for setting value of a global naming resources environment variable用于设置全局命名资源环境变量值的选项
【发布时间】:2012-09-25 21:22:43
【问题描述】:

我在 web.xml 中使用环境变量,它的值使用 cdata 部分,如下所示:

<env-entry> 
    <env-entry-name>myEntry</env-entry-name> 
    <env-entry-type>java.lang.String</env-entry-type> 
    <env-entry-value>
<![CDATA[
<a>
    <b/>
</a>
]]>
    </env-entry-value> 
</env-entry>

我可以在我的 servlet 中读取此值并将字符串视为 XML。

现在我想在 Tomcat server.xml 中设置一个覆盖,但我只能使用属性设置值,即

<Environment name="myEntry" value="baz" type="java.lang.String" override="false"/>

是否有一种解决方法可以让我使用 cdata 部分设置值?

我真正需要做的是为我的 Web 应用程序提供一些 XML 格式的配置。我希望能够在部署时更改此配置,并且我需要支持多个服务器(Tomcat、WebSphere、...)。谢谢。

【问题讨论】:

    标签: tomcat environment-variables server.xml


    【解决方案1】:

    Tomcat 支持来自系统属性的Apache Ant 样式变量替换:JVM 系统属性(包括内置/预定义和使用 -D 开关定义的),以及在catalina.properties 中定义的那些。来自Tomcat 7.0 Configuration Overview

    支持 Apache Ant 风格的变量替换;名称为 propname 的系统属性可以使用语法 ${propname} 在配置文件中使用。所有系统属性都可用,包括使用 -D 语法设置的属性、由 JVM 自动提供的属性以及在 $CATALINA_BASE/conf/catalina.properties 文件中配置的属性。

    所以你可以添加

    myValue=bar<with markup>baz
    

    然后:

    <Environment name="myEntry" value="${myValue}" type="java.lang.String" override="false"/>
    

    【讨论】:

      猜你喜欢
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 2011-12-12
      • 1970-01-01
      • 2013-11-10
      • 2020-02-15
      相关资源
      最近更新 更多