向 GlassFish(以版本V3.1.2为例)中部署".war"类型的Web应用时,通常服务器会自动将该Web应用中的虚拟路径映射到一个缺省的物理磁盘路径下,开发者通过修改该映射的设置,即可以将任何部署的Web应用中的虚拟路径映射到任何的物理磁盘路径下。

修改方法:

当部署完成任何一个".war"类型的Web应用后,开发者都可以在GlassFish服务器的如下路径中找到配置文件"...\glassfish3\glassfish\domains\MyDomain\config\domain.xml",在该文件的<applications></applications>标签中保存着对部署过的所有应用的配置,其中包括虚拟路径到物理磁盘的映射

如下所示:

<applications>
    <application context-root="/" location="file:/D:/TestPic/build/web/" name="TestPic" directory-deployed="true" object-type="user">
        <property name="appLocation" value="file:/D:/TestPic/build/web/"></property>
        <property name="defaultAppName" value="web"></property>
            <module name="TestPic">
                <engine sniffer="security"></engine>
                <engine sniffer="web"></engine>
                <engine sniffer="weld"></engine>
            </module>
    </application>
</applications>

其中TestPic是当前部署的Web应用的名称,“D:/TestPic/build/web/”是当应用部署时,系统默认为应用创建的虚拟路径到物理磁盘的映射。
开发者只需要将<application>中的location参数和<property>中的value参数中指定的默认的映射修改为目标路径磁盘路径即可。
修改后的映射中,应该保留“file:/”说明.

例如:

开发者需要将应用的映射指向“E:\TestPic\Web”,则可以修改domain.xml文件如下所示:

<applications>
    <application context-root="/" location="file:/E:/TestPic/web/" name="TestPic" directory-deployed="true" object-type="user">
        <property name="appLocation" value="file:/E:/TestPic/web/"></property>
        <property name="defaultAppName" value="web"></property>
            <module name="TestPic">
                <engine sniffer="security"></engine>
                <engine sniffer="web"></engine>
                <engine sniffer="weld"></engine>
            </module>
    </application>
</applications>