前言

在开发过程中,如果我们是使用的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...,如下图所示

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

在弹出来的列表中选中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

bat 取得服务列表_基于IDEA热部署更新服务器Tomcat类,服务器Tomcat热更新相关推荐

  1. jrebel热部署不起作用_5种SpringBoot热部署方式,你用哪种?

    来源 | my.oschina.net/ruoli/blog/1590148 Spring Boot 中 5 种热部署方式如下:  1.模板热部署  2.使用调试模式Debug实现热部署  3.spr ...

  2. centos7 校正linux系统时间_基于centos7系统部署NTP服务及配置时间定时同步

    概述 linux服务器在提供服务时,要和其他机器进行请求的交互,实际生产环境中,可能因为时间不同步,导致了服务异常. 下面介绍下怎么部署NTP服务来解决这个问题. ps:强烈吐槽下头条这个新排版功能, ...

  3. 民宿管理系统课程设计_基于“能力本位”的中职酒店类专业《民宿管家服务》课程开发研究...

    基于"能力本位"的中职酒店类专业<民宿管家服务>课程开发 研究 伴随着后工业时代的来临 , 人们越来越追求精神层面的满足. 以 "家的氛围" . & ...

  4. qiankun 微前端_基于qiankun落地部署微前端爬”坑“记

    ❝ 前沿:前半年微前端火得一踏糊涂,刚好业务需求上有这样的应用场景,针对目前的微前端解决方案做了技术选型,qiankun作为蚂蚁金服内部孵化出来的微前端解决方案,经过线上应用充分检验及打磨最后开源,最 ...

  5. bat 取得服务列表_解读浩泽净水2018业绩:稳定增长背后的服务深化和科技跃进...

    北京时间3月26日凌晨,苹果以一场没有任何硬件亮相的"软"发布会,宣告公司将向服务转型,欲以可持续的服务收入抵消iPhone遭遇的增长瓶颈.此举在大洋彼岸的中国引发了热烈反响.分析 ...

  6. bat 取得服务列表_临汾进出口经营者备案,查看详情_共勤外贸服务

    首页 > 新闻列表 > 正文 发布时间:2020-11-05 01:09:16 浏览: 36 导读:共勤外贸服务为您提供临汾进出口经营者备案的相关知识与详情: 共勤外贸服务,遇到困难,欢迎 ...

  7. java 热布署 开源_一种简单快捷的 java 热部署方式

    作者 | 周忠太 阿里巴巴淘系技术部的一个搬砖工 [Arthas 官方社区正在举行征文活动,参加即有奖品拿~点击投稿] Arthas Hot Swap 插件介绍 引言 热部署是帮助开发人员提高效率的利 ...

  8. 第五篇 - 手写Tomcat(基于Netty)热部署

    Github源码下载地址:https://github.com/chenxingxing6/sourcecode/tree/master/code-netty-tomcat 一.前言 Tomcat是一 ...

  9. java 不重启部署_编译Java类后不重启Tomcat有两种方式:热部署、热加载

    不重启Tomcat有两种方式:热部署.热加载 热部署:容器状况在运行时重新部署整个项目.这类环境下一般整个内存会清空,重新加载,这类方式 有可能会造成sessin丢失等环境.tomcat 6确实可以热 ...

最新文章

  1. python csv读取-Python读取csv文件(详解版,看了无师自通)
  2. java 连接 postgresql_java如何连接数据库并对其操作(以PostgreSQL为例)
  3. linux 防火墙配置与REJECT导致没有生效问题
  4. java面试-Java并发编程(六)——线程间的通信
  5. 在linux环境下模拟实现简单命令解释器_git bash 竟然不支持 tree 命令
  6. loadrunner解决在项目中的难点解决
  7. Matlab绘图设置总结
  8. 第八届蓝桥杯第八题日期问题
  9. ESP32-CAM + micropython学习笔记
  10. 二极管ROM的工作原理解读
  11. php path_info orig_path_info
  12. 十道解分式方程及答案_解分式方程的题出20道还要带答案
  13. Java选出偶数,Java 定义集合存入20个随机数字,通过自定义方法筛选偶数元素,放入新集合,打印输出...
  14. 大神面试心法教你沉着应对大小公司的笔试面试
  15. 常用报表开发工具介绍
  16. H.264 SVC 与H.264 AVC 有什么区别?
  17. Scala中的集合排序
  18. 个人收款平台 XorPay 对比 Payjs
  19. SQL Server查看库、表占用空间大小
  20. 不可错过的250款独立游戏(珍藏版)

热门文章

  1. 解决IDEA中导入新的maven依赖后Language Level自动重置问题
  2. ASP.NET一般处理程序新建一个方法里使用context.Response.Write的解决方法
  3. 13-linux定时任务不起作用到的问题解决办法
  4. uniapp、vue,vuex中state改变,getters不动态改变的完美解决方案!
  5. java异常体系结构详解
  6. 使用Docker-Compose,如何执行多个命令
  7. 最大调用堆栈大小超出错误
  8. Facebook 对前端工程师的要求是啥?一起来看看
  9. GeoServer基础教程(三):部署发布Shapefile地图数据
  10. 正面迎战英特尔,英伟达要和博世一起卖自动驾驶系统