IDEA热部署(三)---jetty插件调试(转)
我们在开发的时候习惯对于项目的框架进行分层,在idea中对于不同的层,我们使用module来进行划分,不同的module之间是通过maven来进行依赖的。
我们的项目结构是这样的,admin是我们的war,里面含有controller,service和impl分开,admin依赖于service,这种情况下,我们使用jrebel来启动。
第一种:使用jrebel来启动
修改xml,生效
我们修改了xml中的sql语句是是如何热部署的:
我们需要将service-impl重新进行clean install
我们回到debug的console来进行观察,我们看到jrebel会自动部署我们新安装的包,效果:
浏览器上面的网页刷新发现我们需要重新登入:
有个问题:为什么没有重新启动服务器,而这里却需要重新登入。
改变方法结构,无效
测试修改service中添加参数:
添加完成之后,发现controller中自动爆出错误:
impl中自动检测出现错误:
如果我们只是保存之后,运行发现我们新添加的东西没有起作用
我们对于service或者serviceImpl进行mvn clean install 发现不成功,这是因为我们的admin,是依赖于这两个包的,我们无法再admin使用它们的时候,对于整个包进行操作。就是clean install,是不允许我们操作的。
修改方法内容,生效
修改admin中的controller,和修改serviceimpl中的方法,无需重启。
使用Ctrl+F9进行编译。
第二种情况,debug启动
修改方法内容,生效
修改方法结构,无效
dao层:无效
修改接口中的方法结构:无效
编译单个文件
上面我在修改单个方法结构之后觉得应该是响应的包没有进行安装的问题,所以我的修改没有启动作用,所以我在进行将war依赖的jar进行来重新的install,
编译整个项目
重新installservice,然后在重新installadmin,
依赖包有更新,但是服务器中代码仍然是执行的之前的代码,也就是说我修改的代码,重新打成了jar包放入了我们的war包中,但是war现在运行的代码仍然是之前的代码。(不明白为什么会有这种情况)
修改xml的sql语句,无效
将代码修改正确之后,将admin中的war包重新打入正确语句的impl实现包之后:
发现我们的页面任然限制之前的错误,证明新打的war包没有在jetty插件中运行, 证明jetty插件可能不是热部署war包的。重新启动jetty之后,不做任何之前的修改,部署,发现我们的页面正常访问。证明救过,jetty不是热部署war包的。
总结:
使用jetty插件中的jrebel来进行debug启动的时候:
修改方法内容(controller和service)内容生效。
修改方法结构无效。
修改xml(sql语句)文件生效。
直接使用jetty进行dubug的时候:
修改方法内容(controller和service),生效。
修改方法结构(dao,和接口中的),无效。
修改xml(sql语句),无效。
问题:
在进行修改方法结构的时候,个人认为是因为我的war依赖于我的jar来运行的,我修改了jar之后,没有重新打包放到war中所以我修改的代码没有起到作用,于是我在修改代码之后进行重新install,发现我们war中的jar确实更新了,但是我们的jetty服务器中运行的代码仍然是之前的代码,如果我们冲新启动我们的服务器,不做任何修改,发现我们修改的效果可以运行出来,不是很清楚这个是什么原因,是jetty插件的运行时,不能够进行热部署war吗?
IDEA热部署(三)---jetty插件调试(转)的更多相关文章
- Eclipse中使用JRebel实现项目热部署(Maven插件版)
JRebel实现项目热部署(Maven插件版) 热部署,就是在应用运行过程中不进行重启,可直接进行软件升级. 在开发过程中,热部署就是在项目运行过程中变更代码,无需重启服务器即可使代码生效. tomc ...
- spring boot 之热部署(三)
热部署:当发现程序修改时自动启动应用程序. spring boot使用的是spring-boot-devtools是一个为开发者服务的一个模块.其原理用了classLoader 其中一个加载不变的类, ...
- 基于tomcat插件的maven多模块工程热部署(附插件源码)
内容属原创,转载请注明出处 写在前面的话 最近一直比较纠结,归根结底在于工程的模块化拆分.以前也干过这事,但是一直对以前的结果不满意,这会重操旧业,希望搞出个自己满意的结果. 之前有什么不满意的呢? ...
- mybatis-plus热部署mapper.xml插件JRebel MybatisPlus extension,报错:java.lang.NullPointerException
事件 mybatis转mybatis-plus,结果原来的Jrebel for intrllij 不能热部署mapper.xml文件,百度得知得添加新的插件 JRebel MybatisPlus ex ...
- 探秘 Java 热部署三(Java agent agentmain)
前言 让我们继续探秘 Java 热部署.在前文 探秘 Java 热部署二(Java agent premain)中,我们介绍了 Java agent premain.通过在main方法之前通过类似 A ...
- idea maven jetty插件热部署
maven tomcat插件好像无法进行热部署,jetty可以如下配置实现热部署,但是idea无法进行自动编译,所以需要如下快捷键 Ctrl+Shift+F9,编译 Ctrl+F9,生成项目 < ...
- SpringBoot(三):SpringBoot热部署插件
SpringBoot热部署插件 在实际开发中,我们修改了某些代码逻辑功能或页面都需要重启应用,这无形中降低了开发效率!热部署是指当我们修改代码后,服务能自动启动加载新修改的内容,这样大大提高了我们开发 ...
- Eclipse中安装JRebel热部署教程
Eclipse中安装JRebel热部署教程 前言 Eclipse安装JRebel插件可快速实现热部署,节省了大量重启时间,提高开发效率. 本文只介绍Eclipse安装JRebel插件版本 ...
- 34、springboot的热部署
热部署 在开发中我们修改一个Java文件后想看到效果不得不重启应用,这导致大量时间花费, 我们希望不重启应用的情况下,程序可以自动部署(热部署).有以下四种情况,如何能实现热部署. 1.模板引擎 在S ...
随机推荐
- 【转】RAID 简介
原文:http://wiki.dzsc.com/info/4972.html RAID 的英文全称为 Redundant Array of Inexpensive(或 Independent) Dis ...
- centos安装maven,git,mysql
安装maven1:下载maven包:http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bi ...
- Chapter 6: The Memory Hierarchy
Disk Geometry: 磁盘的结构如图,每个面为surface,surface上的同心圆为track,track包含sector,不同的surface的同半径track构成cylinder.越外 ...
- 深入理解js中的apply、call、bind
概述 js中的apply,call都是为了改变某个函数运行时的上下文环境而存在的,即改变函数内部的this指向. apply() apply 方法传入两个参数:一个是作为函数上下文的对象,另外一个是作 ...
- web离线应用--dom storage
web离线应用--dom storage dom storage是html5添加的新功能,其实也不是什么新的应用,只不过是cookie的放大版本,由于cookie的大小只有4kb,而且在每次请求一个新 ...
- hive中一些常用的sql语句
1.建表 CREATE TABLE IF NOT EXISTS student( time varchar(64) , num int , age int )PARTITIONED BY ( scor ...
- TP框架Ajax如何使用
ThinkPHP可以很好的支持AJAX请求,系统的\Think\Controller类提供了ajaxReturn方法用于AJAX调用后返回数据给客户端.并且支持JSON.JSONP.XML和EVAL四 ...
- 数细胞-swust oj
数细胞(0964) 一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数.编程需要用到的队列及其相关函数已经实现,你只需要完 ...
- python并发编程之多进程一
一,什么是进程 进程是操作系统结构的基础:是一个正在执行的程序:计算机中正在运行的程序实例:可以分配给处理器并由处理器执行的一个实体: 二,进程与程序的区别 进程即运行中的程序,从中即可知,进程是在运 ...
- 51Nod 1110 距离之和最小 V3 中位数 思维
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 X轴上有N个点,每个点除了包括一个位置数据X[i],还包括一个权值W[i].点P到点P[i]的带权距离 = 实际距离 ...