Добавление каталога в путь к классам 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, но не смог сделать это успешно.

649   5  

5 ответов:

просто укажите его в shared.loader или common.loader собственность /conf/catalina.properties.

Смотрите также вопрос: могу ли я создать пользовательский путь к классам для каждого приложения в 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/resources dir и 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.MF file in .War-файл.

обратите внимание, что в соответствии со спецификацией сервлета он должен быть a .война файл и нет .военный каталог для META-INF/MANIFEST.MF читать контейнером.

редактировать MANIFEST.MF свойство Class-Path to C:\app_config\java_app:

посмотреть использование файлов JAR: основы (понимание Манифеста)

наслаждайтесь.

вы можете создать новый файл, setenv.sh (или setenv.bat) внутри каталога tomcats bin и добавьте туда следующую строку

export CLASSPATH=$CLASSPATH:/XX/xx/PATH_TO_DIR

Comments

    Ничего не найдено.