2012-09-25 62 views
1

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

回答

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