參見問題:Can I create a custom classpath on a per application basis in Tomcat
的Tomcat 7 Context持有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/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>
UPDATETomcat 8 change syntax for<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>
剛上這個鏈接HTTP閱讀://www.chemaxon .com/jchem/doc/admin/tomcat.html,那個tomcat並沒有使用系統classpath.I將所有文件從C:/ app_config/java_app複製到/lib文件夾並且它工作正常。看起來像tomcat doestnot use system classpath.Can我們可以在tomcat啓動文件中設置文件夾C:\ app_config \ java_app。 –
Rajat
2009-08-19 16:34:32
http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html – jack 2010-11-06 16:07:35