tomcat 安裝好之后,只需要把你的程序包放到$Tomcat_Home$/webapps下就可以直接使用了。這樣會使webapps越來越大就需要設置虛擬目錄:
1.單個應用設置(為你的單個項目設置虛擬目錄):
在<Host>和</host>之間加上
<Context path="/site" docBase="d:\site" reloadable="true" debug="0">
</Context>
參數:path 表示在瀏覽器中輸入
http://localhost:8080/site
docBase表示你的程序包的物理絕對路徑,默認的絕對路徑是$Tomcat_Home$/webapps
這樣設定了之后會在$tomcat_home$/conf/catalina/localhost目錄下生成一個site.xml文件,此文件的內容就是剛才設置的內容。
2.通過前面我們知道了在$tomcat_home$/conf/catalina/localhost目錄下會生成相應的配置文件,因此我們可以直接在$tomcat_home$/conf/catalina/localhost目錄下寫配置文件文件名任意取,最好是跟你的web應用相同便于管理,如site.xml內容同上
<Context path="/site" docBase="d:\site" reloadable="true" debug="0">
</Context>
3.更改整個根目錄(為你的所有項目設置虛擬目錄):
在$tomcat_home$/conf/server.xml中找到<Host name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true">
將appBase的設置成期望的路徑(絕對路徑)
出現的問題:輸入:
http://localhost:8080/沒有出現默認的頁面
原因當然是更改了路徑造成的。解決也很簡單了,把文件拷過來,或者再把原來默認的設成虛擬路徑。
在調試過程中你也許會遇到這樣的錯誤:
嚴重: Error starting static Resources
java.lang.IllegalArgumentException: Document base E:\Tomcat 5.0\webapps\balancerd does not exist or is not a readable directory
at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:138)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:3910)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4138)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
at org.apache.catalina.core.StandardHostDeployer.addChild(StandardHostDeployer.java:903)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)
at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256)
at org.apache.commons.digester.Rule.end(Rule.java:276)
at org.apache.commons.digester.Digester.endElement(Digester.java:1058)
at org.apache.catalina.util.CatalinaDigester.endElement(CatalinaDigester.java:76)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1567)
at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:488)
at org.apache.catalina.core.StandardHost.install(StandardHost.java:863)
at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:483)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:427)
at org.apache.catalina.startup.HostConfig.checkContextLastModified(HostConfig.java:800)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1085)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:327)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.StandardHost.backgroundProcess(StandardHost.java:800)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1619)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1628)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1608)
at java.lang.Thread.run(Thread.java:619)
這是因為在你的$tomcat_home$\conf\Catalina\localhost下對balancerd 這個項目設置虛擬目錄的.xml文件指定這個項目的路徑不對所造成的把路徑改對了該錯誤消失!