3 回答

TA貢獻1966條經(jīng)驗 獲得超4個贊
Tomcat 7 上下文保留Loader元素。根據(jù)文檔,部署描述符(<Context>標(biāo)記中的內(nèi)容)可以放置在:
$CATALINA_BASE/conf/server.xml -不好-需要重啟服務(wù)器才能重新讀取配置
$CATALINA_BASE/conf/context.xml -不好-在所有應(yīng)用程序中共享
$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- 最好 -完全退出應(yīng)用程序并自動掃描更改?。?!
在這里,我的配置演示了如何使用項目文件的開發(fā)版本而不是使用$CATALINA_BASE層次結(jié)構(gòu)(請注意,我將此文件放入src/test/resourcesdir并指示Maven通過預(yù)處理${basedir}占位符,pom.xml <filtering>true</filtering>因此在新環(huán)境中構(gòu)建后將其復(fù)制到$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>元素的語法,現(xiàn)在相應(yīng)部分如下所示:
<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>

TA貢獻1795條經(jīng)驗 獲得超7個贊
在Tomcat 6中,環(huán)境中的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,因此我認(rèn)為您在編輯setclasspath.bat和更改CLASSPATH的生成方式方面遇到了麻煩。對于Tomcat 6.0.20,此更改類似于setclasspath.bat的74
set CLASSPATH=C:\app_config\java_app;%JAVA_HOME%\lib\tools.jar
添加回答
舉報