Как я могу настроить мою конфигурацию web.xml - PullRequest
3 голосов
/ 15 июня 2009

Я бы хотел развернуть одно и то же веб-приложение для нескольких разных клиентов. Каждое развертывание требует отдельного значения в одном из элементов файла конфигурации web.xml.

Без создания разных .war-файлов для каждого клиента (с разными значениями, установленными в web.xml в каждом .war), возможно ли настроить значения для разных клиентов? Например, может ли файл web.xml получить значения из файла свойств каждого развертывания?

Мы используем Tomcat как контейнер для сервлетов.

Ответы [ 3 ]

2 голосов
/ 16 июня 2009

Вы можете указать изменяющееся свойство вне web.xml, используя JNDI поддержки Tomcat .

Например, укажите запись среды в элементе Context :

<Context ...>
  ...
  <Environment name="maxExemptions" value="10"
         type="java.lang.Integer" override="false"/>
  ...
</Context>

Затем укажите ссылку на эту переменную среды в вашем web.xml:

<env-entry>
  <env-entry-name>maxExemptions</param-name>
  <env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>

А затем позвоните из своего кода, используя (из Professional Apache Tomcat 6 ):

private final Object lock = new Object();
...
synchronized (lock) {
    Context initCtx = new InitialContext();
    Context envCtx = initCtx.lookup("java:comp/env");
    Integer maxExemptions = (Integer) envCtx.lookup("maxExemptions");
}

Или вы можете добавить свою ценность в приложение с помощью Spring, используя <jndi-lookup />

<bean id="someBean">
    <property name="maxExemptions">
        <jndi-lookup jndi-name="xxx" />
    </property>
</bean>
1 голос
/ 15 июня 2009

Вы можете переместить этот элемент за пределы web.xml? Если вы, возможно, можете прочитать его из файла свойств, то вы можете создать отдельный файл свойств для каждого клиента и упаковать войну с файлом свойств для каждого клиента. Затем во время выполнения вы можете прочитать соответствующий файл свойств на основе переменной среды.

0 голосов
/ 15 июня 2009

Краткий ответ: без изменения войны это невозможно.

Более сложная версия: война может содержать некоторые параметры и значения по умолчанию, которые вы часто можете изменить с помощью консоли сервера приложений или веб-сервера. Это зависит от того, что вы хотите настроить, это стандартные параметры context / servlet / ...?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...