我在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 :(得分: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"/>