一般只需要把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会在运行时查找并在逻辑上合并这个文件夹,这个功能为系统开发提供了极大的便利。