我的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,但没能成功地这样做.
Bal*_*usC 123
只需指定它shared.loader或common.loader属性/conf/catalina.properties.
gav*_*koa 27
另请参阅问题:我可以在Tomcat中基于每个应用程序创建自定义类路径
Tomcat 7 Context hold Loader元素.根据docs部署描述符(<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和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>
Run Code Online (Sandbox Code Playgroud)
更新 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>
Run Code Online (Sandbox Code Playgroud)
Tre*_*ton 13
在Tomcat 6中,将忽略您环境中的CLASSPATH.在setclasspath.bat中你会看到
set CLASSPATH=%JAVA_HOME%\lib\tools.jar
Run Code Online (Sandbox Code Playgroud)
然后在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%
Run Code Online (Sandbox Code Playgroud)
我没有看到任何其他包含的变量,所以我认为你很难编辑setclasspath.bat并改变CLASSPATH的构建方式.对于Tomcat 6.0.20,此更改与setclasspath.bat中的74一样
set CLASSPATH=C:\app_config\java_app;%JAVA_HOME%\lib\tools.jar
Run Code Online (Sandbox Code Playgroud)
我建议你做的是在.war文件中添加一个META-INF带有MANIFEST.MF文件的目录.
请注意,根据servlet规范,它必须是.war文件,而不是META-INF/MANIFEST.MF容器读取的.war目录.
将MANIFEST.MFClass-Path属性编辑为C:\app_config\java_app:
请享用.
| 归档时间: |
|
| 查看次数: |
189697 次 |
| 最近记录: |