Параметры для установки значения переменной среды глобальных ресурсов именования

Я использую переменную окружения в 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>

Я могу прочитать это значение в моем сервлете и обработать строку как XML.

Теперь я хочу установить переопределение в Tomcat server.xml, но я могу установить значение только с помощью атрибута, т.е.

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

Есть ли обходной путь, который позволил бы мне установить значение, используя раздел cdata?

На самом деле мне нужно предоставить некоторую конфигурацию для моего веб-приложения в формате XML. Я хочу иметь возможность изменять эту конфигурацию во время развертывания, и мне нужно поддерживать несколько серверов (Tomcat, WebSphere, ...). Благодарю.

1 ответ

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"/>
Другие вопросы по тегам