См. Также вопрос: Могу ли я создать собственный путь к классам для каждого приложения в Tomcat
Tomcat 7 Контекст удерживать Загрузчик элемент. В соответствии с документами дескриптор развертывания (что в теге <Context>
) может быть помещен в:
$CATALINA_BASE/conf/server.xml
- плохо - требуется перезапуск сервера для перечитывания конфигурации
$CATALINA_BASE/conf/context.xml
- плохо - доступно всем приложениям
$CATALINA_BASE/work/$APP.war:/META-INF/context.xml
- плохо - требуется переупаковка для изменения конфигурации
$CATALINA_BASE/work/[enginename]/[hostname]/$APP/META-INF/context.xml
- приятно , но смотрите последний вариант !!
$CATALINA_BASE/webapps/$APP/META-INF/context.xml
- приятно , но смотрите последний вариант !!
$CATALINA_BASE/conf/[enginename]/[hostname]/$APP.xml
- best - полностью вне приложения и автоматически сканируется на наличие изменений !!!
Здесь мой конфиг, который демонстрирует, как использовать версию разработки файлов проекта из иерархии $CATALINA_BASE
(обратите внимание, что я помещаю этот файл в src/test/resources
dir и внедряю Maven для предварительной обработки ${basedir}
заполнителей через pom.xml
<filtering>true</filtering>
поэтому после сборки в новой среде я копирую его в $CATALINA_BASE/conf/Catalina/localhost/$APP.xml
):
<Context docBase="${basedir}/src/main/webapp"
reloadable="true">
<!-- http://tomcat.apache.org/tomcat-7.0-doc/config/context.html -->
<Resources className="org.apache.naming.resources.VirtualDirContext"
extraResourcePaths="/WEB-INF/classes=${basedir}/target/classes,/WEB-INF/lib=${basedir}/target/${project.build.finalName}/WEB-INF/lib"/>
<Loader className="org.apache.catalina.loader.VirtualWebappLoader"
virtualClasspath="${basedir}/target/classes;${basedir}/target/${project.build.finalName}/WEB-INF/lib"/>
<JarScanner scanAllDirectories="true"/>
<!-- Use development version of JS/CSS files. -->
<Parameter name="min" value="dev"/>
<Environment name="app.devel.ldap" value="USER" type="java.lang.String" override="true"/>
<Environment name="app.devel.permitAll" value="true" type="java.lang.String" override="true"/>
</Context>
UPDATE Tomcat 8 изменяет синтаксис для элементов <Resources>
и <Loader>
, соответствующая часть теперь выглядит следующим образом:
<Resources>
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
webAppMount="/WEB-INF/classes" base="${basedir}/target/classes" />
<PostResources className="org.apache.catalina.webresources.DirResourceSet"
webAppMount="/WEB-INF/lib" base="${basedir}/target/${project.build.finalName}/WEB-INF/lib" />
</Resources>