我们在开发的时候习惯对于项目的框架进行分层,在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启动

因为jetty本省也是可以进行热部署的容器。

修改方法内容,生效

修改方法结构,无效

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插件调试(转)的更多相关文章

  1. Eclipse中使用JRebel实现项目热部署(Maven插件版)

    JRebel实现项目热部署(Maven插件版) 热部署,就是在应用运行过程中不进行重启,可直接进行软件升级. 在开发过程中,热部署就是在项目运行过程中变更代码,无需重启服务器即可使代码生效. tomc ...

  2. spring boot 之热部署(三)

    热部署:当发现程序修改时自动启动应用程序. spring boot使用的是spring-boot-devtools是一个为开发者服务的一个模块.其原理用了classLoader 其中一个加载不变的类, ...

  3. 基于tomcat插件的maven多模块工程热部署(附插件源码)

    内容属原创,转载请注明出处 写在前面的话 最近一直比较纠结,归根结底在于工程的模块化拆分.以前也干过这事,但是一直对以前的结果不满意,这会重操旧业,希望搞出个自己满意的结果. 之前有什么不满意的呢? ...

  4. mybatis-plus热部署mapper.xml插件JRebel MybatisPlus extension,报错:java.lang.NullPointerException

    事件 mybatis转mybatis-plus,结果原来的Jrebel for intrllij 不能热部署mapper.xml文件,百度得知得添加新的插件 JRebel MybatisPlus ex ...

  5. 探秘 Java 热部署三(Java agent agentmain)

    前言 让我们继续探秘 Java 热部署.在前文 探秘 Java 热部署二(Java agent premain)中,我们介绍了 Java agent premain.通过在main方法之前通过类似 A ...

  6. idea maven jetty插件热部署

    maven tomcat插件好像无法进行热部署,jetty可以如下配置实现热部署,但是idea无法进行自动编译,所以需要如下快捷键 Ctrl+Shift+F9,编译 Ctrl+F9,生成项目 < ...

  7. SpringBoot(三):SpringBoot热部署插件

    SpringBoot热部署插件 在实际开发中,我们修改了某些代码逻辑功能或页面都需要重启应用,这无形中降低了开发效率!热部署是指当我们修改代码后,服务能自动启动加载新修改的内容,这样大大提高了我们开发 ...

  8. Eclipse中安装JRebel热部署教程

    Eclipse中安装JRebel热部署教程 前言        Eclipse安装JRebel插件可快速实现热部署,节省了大量重启时间,提高开发效率. 本文只介绍Eclipse安装JRebel插件版本 ...

  9. 34、springboot的热部署

    热部署 在开发中我们修改一个Java文件后想看到效果不得不重启应用,这导致大量时间花费, 我们希望不重启应用的情况下,程序可以自动部署(热部署).有以下四种情况,如何能实现热部署. 1.模板引擎 在S ...

随机推荐

  1. TensorFlow(三)---------正则化

    TensorFlow正则化经常被用于Deep-Learn中,泛化数据模型,解决过拟合问题.再深度学习网络只有在有足够大的数据集时才能产生惊人的学习效果.当数据量不够时,过拟合的问题就会经常发生.然而, ...

  2. Google Python编程规范

    http://pan.baidu.com/s/1dD1Ra7J 其他语言的编程风格: http://zh-google-styleguide.readthedocs.org/en/latest/

  3. MSSQL-并发控制-1-Transaction

         MSSQL并发控制原先打算分为两个部分写:隔离级别及锁,写的过程中,发现需要提及下事务的相关内容,故加多一篇博文,共3篇.         如果转载,请注明博文来源: www.cnblogs ...

  4. 线性代数之行列式的C#研究实现

    最近学习机器学习 才发现以前数学没有学好 开始从线性代数开始学起 读完行列式一章写了些C#的代码学习一下. 直接上C#代码: using System; using System.Collection ...

  5. set 利用lower_bound实现key索引

    set中数据类型为结构体T,T中有两个成员key和val定义如下: struct T{ int key,val; T(int k,int v):key(k),val(v){} bool operato ...

  6. 支持多用户web终端实现及安全保障(nodejs)

    背景 笔者近期从事在线IDE工作的开发,作为本地IDE普遍拥有的功能,terminal(命令行)对项目的git操作以及文件操作有着非常强大的支持.而之前没有web伪终端的情况下,仅仅提供已封装好的gi ...

  7. C语言中静态申请内存遇到的错误分析

    今天调试代码中,遇到了一个比较奇怪的打印,dump出来的数据只有前四位有值,其他后面的都为零. 出于直觉,应该是内存没有申请到.仔细核对代码之后,果真发现了一个语法错误,就是使用指针的指针时 ,对申请 ...

  8. tnsping非常慢

    最近给同事虚拟机上安装了一个11g数据库,发现一个奇怪的问题,用windows客户段连接时候非常慢,慢到不能容忍的地步,但是本地os验证登录没有问题,速度非常快,初步定为问题出在监听上,于是我tnsp ...

  9. 求知的木头 Cannot load browser "PhantomJS": it is not registered! Perhaps you are missing some plugin? 测试安装遇到的BUG

    原文链接 求知的木头   Cannot load browser "PhantomJS": it is not registered! Perhaps you are missin ...

  10. hdu 1150 Machine Schedule 最小覆盖点集

    题意:x,y两台机器各在一边,分别有模式x0 x1 x2 ... xn, y0 y1 y2 ... ym, 现在对给定K个任务,每个任务可以用xi模式或者yj模式完成,同时变换一次模式需要重新启动一次 ...