Добавление каталога в путь к классам tomcat
у меня есть папка на моем диске C: как C:app_configjava_app
Эта папка содержит некоторые языковые файлы свойств.
у меня есть класс java (PrjPropertilesLocator), который загружает файлы свойств на основе локали по умолчанию при запуске интернета App.My веб-приложение работает внутри tomcat.
Проблема в том, как я должен установить этот каталог C:app_configjava_app в пути к классу tomcat, так что это становится доступным для ResourceBundle внутри PrjPropertilesLocator класса.
Есть ли способ установить эту папку специально для одного веб-приложения, которое нуждается в этом.Я не хочу помещать файлы свойств внутрь .
на weblogic это работает нормально.Я установил каталог внутри WebLogic classpath в одном из его сценариев запуска, и он отлично работает.
Но на Tomcat я попытался положить его в startup.bat и в setclasspath.bat, но не смог сделать это успешно.
5 ответов:
Смотрите также вопрос: могу ли я создать пользовательский путь к классам для каждого приложения в Tomcat
Tomcat 7 контекст провести погрузчик элемент. Согласно docs дескриптор развертывания (что в
<Context>tag) может быть размещен в:
$CATALINA_BASE/conf/server.xml- плохо - требуется перезапуск сервера для того, чтобы перечитывать config$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-лучшие - полностью из приложения и автоматически сканируется на наличие изменений!!!вот мой конфиг, который демонстрирует, как использовать версию разработки файлов проекта из
$CATALINA_BASEиерархия (обратите внимание, что я помещаю этот файл вsrc/test/resourcesdir и intruct 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>обновление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>
в Tomcat 6 путь к классам в вашей среде игнорируется. В setclasspath.летучая мышь вы увидите
set CLASSPATH=%JAVA_HOME%\lib\tools.jarзатем в Каталина.летучая мышь, он используется так
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%Я не вижу никаких других vars, которые включены, поэтому я думаю, что вы застряли с редактированием setclasspath.bat и изменение способа построения пути к классам. Для Tomcat 6.0.20 это изменение было похоже на 74 из setclasspath.летучая мышь
set CLASSPATH=C:\app_config\java_app;%JAVA_HOME%\lib\tools.jar
что я предлагаю вам сделать, это добавить с
MANIFEST.MFfile in .War-файл.обратите внимание, что в соответствии со спецификацией сервлета он должен быть a .война файл и нет .военный каталог для
META-INF/MANIFEST.MFчитать контейнером.редактировать
MANIFEST.MFсвойство Class-Path toC:\app_config\java_app:посмотреть использование файлов JAR: основы (понимание Манифеста)
наслаждайтесь.
вы можете создать новый файл, setenv.sh (или setenv.bat) внутри каталога tomcats bin и добавьте туда следующую строку
export CLASSPATH=$CLASSPATH:/XX/xx/PATH_TO_DIR
Comments