怎么配置eclipse热部署
本文章将会演示怎么配置eclipse调试器在不重启服务器的情况下支持热部署,热插拔或者热码替换。
环境:
- Eclipse 4.4(老版本也一样支持)
- Eclipse Tomcat 插件
1. 热部署例子
通过这个简单的热部署例子,可以在不用重启tomcat的情况下是代码修改生效。假设一个简单的Spring MVC Web项目已经通过eclipse部署到tomcat里。
1.1 源代码
@Controller
public class TaskController {
@RequestMapping(value = "/task", method = RequestMethod.GET)
public ModelAndView index() {
logger.debug("index()");
ModelAndView model = new ModelAndView();
model.setViewName("index");
return model;
}
......
//output
DEBUG c.m.o.web.controller.TaskController - index()
1.2 修改代码,添加一些日志
@Controllerpublic class TaskController {
@RequestMapping(value = "/task", method = RequestMethod.GET)
public ModelAndView index() {
logger.debug("index() - NEW - NO RESTART");
ModelAndView model = new ModelAndView();
model.setViewName("index");
return model;
}
......
再次访问:http://localhost:8080/project/task
//output
DEBUG c.m.o.web.controller.TaskController - index() - NEW - NO RESTART
2. 在eclipse里面配置热部署
双击tomcat,打开tomcat的配置界面,按如下几个步骤配置eclipse热部署:
2.1 单击“Overview”选项卡
2.1.1 展开“Server Options”,勾选“Serve modules without publishing”选项
2.1.2 展开”publishing“,勾选”Automatically publish when resources change“选项。这个配置是用来热部署资源,如:JSP,XML和properties文件等。
2.2 单击”Modules“选项卡,确保”Auto Reload“是被禁用的
2.4 以DEBUG模式启动tomcat,热部署在DEBUG模式下才可用
3. 限制
热部署只支持方法内代码的修改,如果添加了新的类或方法依然需要重启才能生效。
为了模拟这种情况,尝试添加了一个新方法,弹出了提示框,JVM不能热切换这个修改的代码。