关于Tomcat 6的热部署和热加载

在tomcat的server.xml的host标签中加入

<Context path="/Velocity" docBase="D:\workSpace\Velocity\webRoot" reloadable="true"/>

path:指定访问该Web应用的URL入口。 
docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。 
reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。

方法2(个人觉得这种方法比较好):在tomcat的conf\Catalina\localhost目录中新建一个Velocity.xml文件,内容为

<?xml version="1.0" encoding="UTF-8"?>

<Context path="/Velocity" docBase="D:\workSpace\Velocity\webRoot" reloadable="true"/>


我的环境:

    eclipse 版本 3.4   , 默认设置为 自动编译  即(Project -> Biuld automatically 打钩)

    tomcat 版本 6.0    , server.xml 设置如下:

[html]  view plain  copy
 
  1. <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">  
  2.       <Context docBase="CPCWeb" path="/CPCWeb" reloadable="true" source="org.eclipse.jst.j2ee.server:CPCWeb"/></Host>  

大家可以看到 Host 标签和Context标签中 

autoDeploy="true"    ----  自动部署
reloadable="true"     ----  自动加载


现在我把这两个值都设置为false,即修改后的配置如下:

[html]  view plain  copy
 
  1. <Host appBase="webapps" autoDeploy="false" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">  
  2.       <Context docBase="CPCWeb" path="/CPCWeb" reloadable="false" source="org.eclipse.jst.j2ee.server:CPCWeb"/></Host>  

重启Tomcat ,支持类的自动加载了,tomcat 不重启了,控制台打印少了,世界终于安静了...

原文地址:http://blog.csdn.net/sz_bdqn/article/details/18960321


热部署是指在你修改项目BUG的时候对JSP或JAVA类进行了修改在不重启WEB服务器前提下能让修改生效。但是对配置文件的修改除外! 

1、直接把项目web文件夹放在webapps里。


2、在tomcat\conf\server.xml中的<host></host>内部添加<context/>标签: 
<Context debug="0" docBase="D:\demo1\web" path="/demo1" privileged="true" reloadable="true"/>

 

docBase:项目路径,可以使用绝对路径或相对路径,相对路径是相对于webapps 
path:访问项目的路径,如:http://127.0.0.1:8080/demo1 
reloadable:是否自动加载新增或改变的class文件. 
debug属性与这个Engine关联的Logger记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为0。 也就是程序异常时写入日志文件里的详细程度。


3、第三种方式和第二种差不多,但是不是在Server.xml文件中添加Context标签,而是在 
%tomcat_home%\conf\Catalina\localhost中添加一个XML文件,

如:demo1.xml,内容如下: 
<?xml version="1.0" encoding="UTF-8"?> 
<Context docBase="D:\demo1\web" reloadable="true" /> 
,只是缺少了path属性,如果你硬写个path="demo2"的话,是没有用的,tomcat不明确的告诉你:“我不认得”, 
这种方式服务器会使用xml文件的名字作为path属性的名字,SO访问地址为:http://localhost:8080/demo1 

=========================================================================================


还有一种方式:使用第三方工具

http://www.zeroturnaround.com/jrebel/

1、解压缩包

2、执行java -jar jrebel-setup.jar

3、会弹出一个安装界面(自己看,很好懂)

4、在MyEclipse中配置,找到服务器(如tomcat)的配置页面,在tomcat的jdk配置页面的Optional Java VM arguments输入框中加如下参数:

-noverify -javaagent:D:\dev\JRebel\jrebel.jar -Drebel.dirs=D:\dev\apache-tomcat-6.0.20\webapps\nmr

第一个路径是jar包的绝对路径,第二个地址是说想让哪个目录下的类更改后不重启服务。

如果Optional Java VM arguments输入框中有其他参数,用空格隔开。

5、发布项目,就能在控制台看到效果。

类就可以改变之后不用重启tomcat。

目前流行的服务器都支持。详细看官方网站。

下载的压缩包文件名为jrebel-setup.zip (7.8 MB) 
可参考:http://japankn.javaeye.com/blog/577931



你可能感兴趣的:(关于Tomcat 6的热部署和热加载)