为了账号安全,请及时绑定邮箱和手机立即绑定

向tomcat类路径添加目录

向tomcat类路径添加目录

手掌心 2019-11-11 14:18:52
我的C:驱动器中有一个文件夹,因为C:\app_config\java_app 该文件夹包含一些特定于语言环境的属性文件。我有一个Java类(PrjPropertilesLocator),可在启动Web App时根据默认语言环境加载属性文件。我的Web应用程序在tomcat中运行。问题是我应该如何C:\app_config\java_app在tomcat类路径中设置此目录,以便PrjPropertilesLocator该类对类中的ResourceBundle可用。有没有办法我可以为需要它的单个Web应用程序专门设置此文件夹。我不想将属性文件放在WEB-INF/classes文件夹中。在weblogic上,它运行良好。我在weblogic类路径中的启动脚本之一中设置了目录,并且运行良好。但是在Tomcat上,我也尝试将其放入startup.bat中setclasspath.bat,但未能成功完成。
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞


Tomcat 7 上下文保留Loader元素。根据文档,部署描述符(<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- 最好 -完全退出应用程序并自动扫描更改!!!

在这里,我的配置演示了如何使用项目文件的开发版本而不是使用$CATALINA_BASE层次结构(请注意,我将此文件放入src/test/resourcesdir并指示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>


查看完整回答
反对 回复 2019-11-11
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

在Tomcat 6中,环境中的CLASSPATH被忽略。在setclasspath.bat中,您将看到


set CLASSPATH=%JAVA_HOME%\lib\tools.jar

然后在catalina.bat中,就像这样


%_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%

我没有看到任何其他var,因此我认为您在编辑setclasspath.bat和更改CLASSPATH的生成方式方面遇到了麻烦。对于Tomcat 6.0.20,此更改类似于setclasspath.bat的74


set CLASSPATH=C:\app_config\java_app;%JAVA_HOME%\lib\tools.jar


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 873 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信