Определение параметров контекста сервлета Tomcat
-
06-07-2019 - |
Вопрос
Сценарий:
файл foo.war содержит значение параметра инициализации по умолчанию 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/.Где / как я могу это сделать???
Решение
В соответствии с документацией Контекст элемент:
Контекстные Параметры
Вы можете настроить именованные значения, которые будут сделаны видимыми для Интернета приложение как контекст сервлета параметры инициализации путем вложения
<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
атрибут a <Parameter>
, в документации говорится:
Установите это значение на
false
если вы не хотите, чтобы<context-param>
для того же имени параметра, найденного в дескрипторе развертывания веб-приложения, переопределить указанное здесь значение.По умолчанию переопределения разрешены.
Установка для него значения false должна сработать.Это была часть "как".
Что касается части "где", прочитайте "обратитесь к введению Контекстный контейнер:
Для Tomcat 6, в отличие от Tomcat 4.x, НЕ рекомендуется размещать
<Context>
элементы непосредственно вserver.xml
файл. Это происходит потому, что это делает изменение конфигурации контекста более инвазивным, поскольку основнойconf/server.xml
файл не может быть перезагружен без перезапуска Tomcat.Контекст элементы могут быть явно определены:
- В
$CATALINA_BASE/conf/context.xml
файл:информация об элементе контекста будет загружена всеми веб-приложениями.- В
$CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default
файл:информация об элементе контекста будет загружена всеми веб-приложениями этого хоста.- В отдельных файлах (с расширением ".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]/
и переименован в соответствии с контекстным путем приложения.Как только этот файл будет существовать, он не будет заменен, если начнется новая ВОЙНА с более новым/META-INF/context.xml
размещается в базе приложений хоста.- Внутри основного элемента в главном
conf/server.xml
.За исключением
server.xml
, файлы , которые определяют Контекст элементы могут определять только один Контекст элемент.
Другие советы
Аргх!Мне казалось, я уже спрашивал об этом раньше.Иногда действительно трудно осуществлять поиск на этом сайте.
где / как настроить ресурсы конфигурации для Tomcat .файлы войны