关于Eclipse Tomcat开发中的热部署
( 1) 热部署:就是容器状态在运行的情况下重新部署整个项目.在这种情况下一般整个内存会清空,重新加载.简单来说就是Tomcat或者其他的web服务器会帮我们重新加载项目.这种方式可能会造成sessin丢失等情况.
(2)热加载:就是容器状态在运行的情况下重新加载改变编译后的类.在这种情况下内存不会清空,session不会丢失,但容易造成内存溢出,或者找不到方法。因为内存无法转变成对像. 一般改变类的结构和模型就会有异常,在已经有的变量和方法中改变是不会出问题的
在基于Java的实现热部署、热加载的过程中,类装入器扮演着重要的角色。类装入器不能重新装入一个已经装入的类,否则会报java.lang.LinkageError,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序。一般debug模式都支持热加载。
在Eclipse中找到 server.xml 把Context 节点的reloadable改为false,添加crossContext="true",这样就能热启动了.
注意:1.需要用debug启动.
2.每次部署新项目的时候,重新去更改配置.
1 <Context docBase="hd" path="/hd" reloadable="false" crossContext="true" source="org.eclipse.jst.jee.server:hd"/><Context docBase="ds" path="/ds" reloadable="false" crossContext="true" source="org.eclipse.jst.jee.server:ds"/>