当前位置: 代码迷 >> Web前端 >> tomcat的虚拟目录跟热部署
  详细解决方案

tomcat的虚拟目录跟热部署

热度:343   发布时间:2012-11-23 00:03:43.0
tomcat的虚拟目录和热部署
虚拟目录的设置
一种:把项目文件放到tomcat的安装路径的相关位置
1. 放在tomcat根目录下,server.xml中docBase="../项目部署名称"
2. 放在webapps目录下,其他路径tomcat找不到的
二种:把源项目路径引入tomcat的配置文件中
写一个xml文件,放在${tomcat安装目录}/conf/Catalina/localhost目录下,其他路径tomcat找不到的,docBase="E:\workspace\项目工程\WebRoot"



方法一:
在${tomcat安装目录}/conf/Catalina/localhost目录下添加与web应用同名的xml配置文件。


test.xml内容:
<Context path="/test" docBase="E:\workspace\test\WebRoot" crossContext="true" debug="3" privileged="true"                                 reloadable="true">
</Context>


方法二:
直接修改server.xml文件,请在修改之前先做好备份。

    <server>

        <Engine>

            <Host>

                    ......

                    <Context path="/test" docBase="E:\workspace\test\WebRoot" crossContext="true"

                             debug="3"   privileged="true" reloadable="true">
                    </Context>

            </Host>

        </Engine>
    </server>



属性说明:

crossContext 如果想在应用内调用ServletContext.getContext()来返回在该虚拟主机上运行的其他web application的request dispatcher,设为true。在安全性很重要的环境中,设为false,使得getContext()总是返回null。缺省值为false。
docBase         该web应用的文档基准目录(Document Base,也称为Context Root),或者是WAR文件的路径。可以使用绝对路径,也可以使用相对于context所属的Host的appBase路径。
override         如果想利用该Context元素中的设置覆盖DefaultContext中相应的设置,设为true。缺省情况下使用DefaultContext中的设置。
privileged       设为true,允许context使用container servlets,比如manager servlet。
path              web应用的context路径。catalina将每个URL的起始和context path进行比较,选择合适的web应用处理该请求。特定Host下的context path必须是惟一的。如果context path为空字符串(""),这个context是所属Host的缺省web应用
reloadable     如果希望Catalina监视/WEB-INF/classes/和/WEB-INF/lib下面的类是否发生变化,在发生变化的时候自动重载web application,设为true。这个特征在开发阶段很有用,但也大大增加了服务器的开销。因此,在发布以后,不推荐使用。


热部署的设置
tomcat上的部署问题,有时候是个麻烦的事,当修改java的代码后都要重启tomcat。现在,我们采用热部署,节省开发时间。

实现步骤:

1. 根据上面虚拟目录的设置方法,建立虚拟目录,在这里采用方一,因为不用修改server.xml文件

在${tomcat安装目录}/conf/Catalina/localhost目录下添加与web应用同名的xml配置文件。


test.xml内容:
<Context path="/test" docBase="E:\workspace\test\WebRoot" crossContext="true" debug="3" privileged="true"   reloadable="true">
</Context>


2. 修改eclipse 的.classpath文件的output路径

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
        ......
    <classpathentry kind="output" path="WebRoot/WEB-INF/classes"/>
</classpath>
  相关解决方案