用于设置全局命名资源环境变量的值的选项

时间:2012-09-25 21:22:44

标签: tomcat environment-variables server.xml

我在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,...)。感谢。

1 个答案:

答案 0 :(得分:0)

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"/>