热部署是指在你修改项目BUG的时候对JSP或JAVA类进行了修改在不重启WEB服务器前提下能让修改生效。但是对配置文件的修改除外!
一、把项目放在webapps目录,这种方式是最简单的。
比如说要部署一个新web工程,在tomcat已启动的状态下,把war包拷贝到tomcat的webapps目录即可,tomcat会自动解压。
另外一种情况,就是替换部分文件(jsp文件,java文件),这类文件不需要重启tomcat,其他配置文件的修改需要重启tomcat。
新建一个动态web工程,利用eclipse自动构建项目生成的web.xml文件中,利用欢迎页,我们只需新建一个index.jsp即可。
把项目部署到tomcat中,为演示这两种情况,先启动tomcat,模拟初次部署test工程,把test.war放到webapps目录下,访问如下:
模拟第二种情况,日常经常干的事,比如jsp页面要修改,或者java文件要修改,只需替换编译之后的jsp或者class文件。
比如修改index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>tomcat测试热部署</title>
</head>
<body>
Hello 宝康大仙!
</body>
</html>
把这个index.jsp替换掉tomcat中对应的index.jsp,在不重启tomcat的情况下,可以访问到修改后的页面。
二、在tomcat\conf\server.xml中的<host></host>
内部添加<context/>
标签:
<Context debug="0" docBase="D:\demo1\web" path="/demo1" privileged="true" reloadable="true"/>
docBase为你项目的位置,可以使用绝对路径或相对路径,相对路径是相对于webapps
path为访问工程的的路径,在这里访问为http://ip:port/demo1
,
debug属性与这个Engine关联的Logger记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为0。 也就是程序异常时写入日志文件里的详细程度。
reloadable:是否自动加载新增或改变的class文件.
三、跟第二种差不多,换了一个地,在tomcat的conf/Catalina/localhost添加一个xml文件,这种方式没有像第二种那样配置path,而是以xml的文件名字作为path.
hbk.xml内容如下
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:\demo1\web" reloadable="true" />
则访问使用http://ip:port/hbk