Определение параметров контекста сервлета Tomcat
Сценарий:
Файл 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 ответа
Согласно документации элемента 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.Элементы контекста могут быть явно определены:
- в
$CATALINA_BASE/conf/context.xml
file: информация об элементе Context будет загружена всеми веб-приложениями.- в
$CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default
file: информация об элементе 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
файлы, которые определяют элементы контекста, могут определять только один элемент контекста.
Argh! Я думал, что спросил это раньше. Иногда очень трудно искать на этом сайте.
где / как настроить конфигурационные ресурсы для файлов Tomcat .war