文档章节

热部署与热加载

反经
 反经
发布于 2013/08/24 14:06
字数 704
阅读 972
收藏 5

1.热部署和热加载的概念

热部署:就是容器状态在运行的情况下重新部署整个项目.在这种情况下一般整个内存会清空,重新加载.简单来说就是Tomcat或者其他的web服务器会帮我们重新加载项目.这种方式可能会造成sessin丢失等情况.

热加载:就是容器状态在运行的情况下重新加载改变编译后的类.在这种情况下内存不会清空,sessin不会丢失,但容易造成内存溢出,或者找不到方法。因为内存无法转变成对像. 一般改变类的结构和模型就会有异常,在已经有的变量和方法中改变是不会出问题的

在基于Java的实现热部署、热加载的过程中,类装入器扮演着重要的角色。类装入器不能重新装入一个已经装入的类,否则会报java.lang.LinkageError,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序。一般debug模式都支持热加载。

2.JRebel 热部署

JRebel 是收费的要激活才能用,不过有试用期。

是否启用JRebel可以到Run configurations中设置.

这家伙占用内存较大,所以要把VM改大点:选中被运行的类,点击菜单‘run->run...’,选择(x)=Argument标签页下的vm arguments框里输入 -Xmx800m, 保存运行

每个要使用JReble的Project都需要单独设置

3.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://127.0.0.1:8080/demo1 

reloadable:是否自动加载新增或改变的class文件. 
debug属性与这个Engine关联的Logger记录的调试信息的详细程度。数字越大,输出越详细。如果没有指定,缺省为0。 也就是程序异常时写入日志文件里的详细程度。

第二种方式和第一种差不多,但是不是在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 

© 著作权归作者所有

反经
粉丝 36
博文 172
码字总数 43569
作品 0
广州
程序员
私信 提问
死磕Tomcat系列(6)——Tomcat如何做到热加载和热部署的

死磕Tomcat系列(6)——Tomcat如何做到热加载和热部署的 热部署就是在服务器运行时重新部署项目,热加载即在在运行时重新加载class,从而升级应用。 通常情况下在开发环境中我们使用的是热加载...

不学无数的程序员
07/12
1K
4
spring boot修改代码后无需重启设置,在开发时实现热部署

Spring Boot在开发时实现热部署(开发时修改文件保存后自动重启应用)(spring-boot-devtools) 热部署是什么 大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改...

微wx笑
2018/04/13
0
0
实现Java热部署的几种解决方案

百度百科:热部署,就是应用正在运行的时候就可以升级软件,而不需要重新启动应用。 spring-loaded 依赖 ps:据说此方法还需要手动编译(),请亲测! spring-boot-devtools 依赖 JRebel 安装...

mario阿东
2018/03/25
0
0
Android动态加载的类型

基本信息 Author:kaedea GitHub:android-dynamical-loading 现在网络上有许多关于动态加载的介绍的文章,谈及的关键词汇有动态加载、插件化、热部署、热修复等,对于一些刚接触这方面开发技...

Kaede
2017/11/29
0
0
Spring Boot在开发时实现热部署(开发时修改文件保存后自动重启应用)(spring-boot-devtools)

热部署是什么 大家都知道在项目开发过程中,常常会改动页面数据或者修改数据结构,为了显示改动效果,往往需要重启应用查看改变效果,其实就是重新编译生成了新的Class文件,这个文件里记录着...

easonjim
2017/09/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开发中常用的正则表达式

为了能够更好地理解如何在C#环境中使用正则表达式,这里整理了一些常用的正则表达式: 罗马数字: string p1 = "^m*(d?c{0,3}|c[dm])" + "(l?x{0,3}|x[lc])(v?i{0,3}|i[vx])$";string t1 ......

木庄
38分钟前
4
0
【.NET程序打包】VS2019使用Installer Projects打包

C#—使用Installer Projects打包桌面应用程序 前言 打包桌面应用程序实在是一个不常使用的东西,偶尔使用起来经常会忘东忘西的耽误时间,因此,这篇文章多以图片记录过程,也是用于备忘。 下...

_Somuns
42分钟前
4
0
自定义注解,使用动态代理解决网站的字符集编码问题

第1章设置环境 安装操作系统,安装备份(镜像): JDK: 设置环境变量Eclipse:解压即可 Eclipse自身解压目录不包括中文 代码工作空间目录不包括中文Tomcat:解压不要包含中文目录M...

蓝来杯往
47分钟前
6
0
Solr中的字段类型field type

Solr含有多种字段类型,可用的字段类型基本都定义在了包org.apache.solr.schema中,列举如下: 类 说明 BinaryField 二进制数据 BoolField 布尔值,其中’t’/’T’/’1’都是true Collatio...

gantaos
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部