基于IDEA热部署更新服务器Tomcat类,服务器Tomcat热更新

前言

在开发过程中,如果我们是使用的IDEA,就会知道IDEA有一个热更新的功能,何为热更新?就是在不重启Tomcat的情况下让服务器中的代码变更为最新的。这样既能快速的更新代码,又不用担心Tomcat重启session过期的问题,如同更新jsp一般的方便,当然IDEA里面的热更新还是没有更新jsp那么方便,具体限制本文后面有提(只是我目前了解到的限制)。如果说本地更新还算快捷,那么服务器更新就更加麻烦了,一般我们更新服务器上面的程序有2种情况,一是全量更新,就是打包war包去更新,二是部分更新,就是修改了那个class,就去服务器替换某个class文件,然后重启服务器(jsp文件不算,因为更新jsp是不需要重启Tomcat的,具体原因自己行百度)。这样常规的更新有2个弊端,第一:耗费时间长,不管是文件上传的时间,还是重启服务的时间,尤其是在项目很大启动很慢的时候,有时候只是更新一个简单的东西,却要等待数分钟,而且这数分钟还不是一个人的时间,是所有当时在用这台服务器的人的时间,第二:session失效的问题,服务器一旦重启,所有登录的用户就需要重新登录(当然如果session不是保存在Tomcat中的就另当别论了)。

基于以上种种,如果更新服务器能像我们本地IDEA一样方便,那么会节省我们很多的时间,加快各方人马的开发进度。幸好这种方式是有的,可以实现在IDEA中直接更新服务器代码,此方式是基于Tomcat远程调试的(不清楚远程调试的同学建议百度,也是一个挺好用的功能),而且不需要做其他配置,所以直接进入配置环节

Tomcat远程调试配置

因为只要配置好了IDEA的远程调试,就会自动生成服务器相关的Tomcat配置,所以可以先从IDEA开始配置

IDEA配置

首先点击启动项,在弹出的界面中点击Edit Configurations...,如下图所示


Edit Configurations...

然后点击加号添加一个远程服务器


添加远程服务器

在弹出来的列表中选中Remote添加
Remote

然后在右边的界面中配置启动项的名称,服务器的地址和端口


配置地址和端口

端口需要服务器中没有被占用的端口,一旦正确配置了服务器的地址和端口,Command line arguments for remote JVM中自动生成的服务器JVM配置就是正确的了,复制好里面的内容,然后保存刚才的配置
Tomcat配置

进入Tomcat目录下bin目录修改catalina.sh文件(Linux),如果是Windows则修改catalina.bat文件,在前面加入export JAVA_OPTS='xxx',其中xxx是刚刚Command line arguments for remote JVM中复制的内容,然后重启服务器就可以了

使用

配置完成后,需要热更新的时候,就先从启动项中选中配置的远程服务器启动,然后修改代码,点击编译按钮,编译完成后会提示是否更新,点击确定就能更新,更新完成无论成功还是失败都会有相应的提示,跟IDEA在本地热更新是一样的,当然这样热更新也又诸多限制,代码修改限制跟IDEA本地热更新限制相同

限制

1:只能更新到方法体的修改,如果类本身添加了属性或者方法以及方法修改了参数又或者新增了类是无法更新的(IDEA本身可以通过JRebel插件热更新这些不能更新的东西)
2:想要热更新就必须要保证本地未修改前的代码跟服务器的代码是一致的,否则会导致更新不成功
3:热更新后并不会覆盖class文件,也就是说重启Tomcat后,热更新的代码就失效了,所以重启Tomcat时需要覆盖被热更新的class

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容