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

4

1 回答 1

0

Tomcat 支持来自系统属性的Apache Ant样式变量替换:JVM 系统属性(内置/预定义和使用 -D 开关定义的),以及在catalina.properties. 从Tomcat 7.0 配置概述

支持 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"/>
于 2012-11-20T02:31:51.810 回答