一般只需要把Java站點文件夾或*.war文件拷貝到Web Server的webapps文件夾下,即可啓動運行該站點,但更多時候,我們並不想拷貝站點,而是希望Web在Server文件夾之外運行,這時就需要配置虛擬目錄了。不同的WebServer配置虛擬目錄的方式不太一樣,這裏的配置方法僅針對Tomcat和Jetty。
Tomcat:找到並打開Tomcat目錄下的conf/server.xml文件,在Host小節中添加以下配置即可:
1: <Context path="/myvpath" debug="0" docBase="d:/myWebtest" reloadable="true">
2: </Context>
當然如果不想修改server.xml文件,也可以把虛擬目錄的配置作爲單獨的文件添加到相應的目錄中,server.xml中缺省都會有localhost的配置,那麼相應的也存在conf/Catalina/localhost文件夾,在此文件夾下添加一個xml文件,內容爲以下即可:
1: <?xml version='1.0' encoding='utf-8'?>
2: <Context path="/myapp" docBase="D:/myWebtest" debug="1" reloadable="true" >
3: </Context>
path屬性配置的是虛擬目錄的名稱,docBase配置的是站點的真實路徑。
Jetty:Jetty的全局配置文件在etc/jetty.xml中,可以直接在此配置文件中設置虛擬目錄,但一般不建議這麼做,推薦的做法是創建獨立的配置文件。在contexts目錄下創建新的xml文件,內容如下:
1: <?xml version="1.0" encoding="ISO-8859-1"?>
2: <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
3: <Configure class="org.mortbay.jetty.webapp.WebAppContext">
4: <Set name="configurationClasses">
5: <Array type="java.lang.String">
6: <Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item>
7: <Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item>
8: <Item>org.mortbay.jetty.plus.webapp.Configuration</Item>
9: <Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item>
10: <Item>org.mortbay.jetty.webapp.TagLibConfiguration</Item>
11: </Array>
12: </Set>
13: <Set name="contextPath">/myapp</Set>
14: <Set name="baseResource">
15: <New class="org.mortbay.resource.ResourceCollection">
16: <Arg>
17: <Array type="java.lang.String">
18: <Item>d:/java/myApptest</Item>
19: </Array>
20: </Arg>
21: </New>
22: </Set>
23: </Configure>
其中的contextPath即爲虛擬目錄名稱,而baseResource中的Item中即爲站點真實路徑。這裏可以看到baseResource中設置的實質上是一個String數組,也就是說這個站點可以有多個文件夾,Jetty允許一個站點的資源文件分佈在磁盤不同的位置,Jetty會在運行時查找並在邏輯上合併這個文件夾,這個功能爲系統開發提供了極大的便利。