您的位置:首页 > 运维架构 > Tomcat

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

2016-04-20 16:54 567 查看
在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







<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">

<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







<Host appBase="webapps" autoDeploy="false" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">

<Context docBase="CPCWeb" path="/CPCWeb" reloadable="false" source="org.eclipse.jst.j2ee.server:CPCWeb"/></Host>

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

原文地址:/article/8086530.html

热部署是指在你修改项目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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: