Определение параметров контекста сервлета Tomcat - PullRequest
8 голосов
/ 26 октября 2009

Сценарий:

Файл foo.war содержит значение по умолчанию для параметра init fooParam = 1.

Это определено в foo.war!WEB_INF/web.xml, который содержит:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app 
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

    <context-param>
      <param-name>fooParam</param-name>
      <param-value>1</param-value>
      <description>
        my parameter "fooParam"
      </description>
    </context-param>

    ...

Хорошо, теперь я хочу переопределить его в файле конфигурации в каталоге Tomcat {$ CATALINA_HOME} / conf /. Где / как я могу это сделать ???

Ответы [ 2 ]

17 голосов
/ 26 октября 2009

Согласно документации элемента Context :

Параметры контекста

Вы можете настроить именованные значения, которые будет сделано видимым в Интернете приложение как контекст сервлета параметры инициализации путем вложения <Parameter> элементов внутри элемент. Например, вы можете создать такой параметр инициализации:

<Context ...>
  ...
  <Parameter name="companyName" value="My Company, Incorporated"
         override="false"/>
  ...
</Context>

Это эквивалентно включению следующий элемент в сети дескриптор развертывания приложения (/WEB-INF/web.xml):

<context-param>
  <param-name>companyName</param-name>
  <param-value>My Company, Incorporated</param-value>
</context-param>

но не требует модификации дескриптор развертывания для настройки это значение.

Действительные атрибуты для Элемент <Parameter> имеет следующий вид:

...

Об атрибуте override для <Parameter> в документации сказано:

Установите это значение на false, если вы не хотите, чтобы <context-param> для того же имени параметра, найденного в дескрипторе развертывания веб-приложения, переопределяло значение, указанное здесь. По умолчанию переопределения разрешены.

Установка в false должна сработать. Это была часть "как".


Для части "где" читайте ссылку на введение Контейнер контекста :

Для Tomcat 6, в отличие от Tomcat 4.x, НЕ рекомендуется размещать элементы <Context> непосредственно в файле server.xml. Это потому, что это делает изменение конфигурации контекста более инвазивным, поскольку Основной conf/server.xml файл не может быть перезагружен без перезапуска Tomcat.

Контекст * Элементы 1050 * могут быть явно определены:

  • В файле $CATALINA_BASE/conf/context.xml: информация об элементе Context будет загружена всеми веб-приложениями.
  • В файле $CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default: информация об элементе Context будет загружена всеми веб-приложениями этого хоста.
  • В отдельных файлах (с расширением «.xml») в каталоге $CATALINA_BASE/conf/[enginename]/[hostname]/. Имя файла (без расширения .xml) будет использоваться в качестве пути к контексту. Многоуровневые контекстные пути могут быть определены с использованием #, например, foo#bar.xml для контекстного пути /foo/bar. Веб-приложение по умолчанию может быть определено с помощью файла с именем ROOT.xml.
  • Только если файл контекста не существует для приложения в $CATALINA_BASE/conf/[enginename]/[hostname]/, в отдельном файле в /META-INF/context.xml внутри файлов приложения. Если веб-приложение упаковано как WAR, тогда /META-INF/context.xml будет скопировано в $CATALINA_BASE/conf/[enginename]/[hostname]/ и переименовано в соответствии с контекстным путем приложения. Если этот файл существует, он не будет заменен, если в базу приложения хоста будет добавлена ​​новая WAR с более новым /META-INF/context.xml.
  • Внутри главного элемента в главном conf/server.xml.

За исключением server.xml, файлы, которые определяют элементы Context , могут определять только один элемент Context .

0 голосов
/ 26 октября 2009

Argh! Я думал, что спросил это раньше. Иногда очень трудно искать на этом сайте.

где / как настроить ресурсы конфигурации для файлов Tomcat .war

...