我们在开发的时候习惯对于项目的框架进行分层,在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. STM32F4中USB与PC双向通信

    STM32F4系列处理器内部集成了USB-OTG控制器,在不要外部USB IC下就可以实现USB通信,最近两天看了下如何利用STM32的USB实现通信,记录下关键步骤: 1. 从http://www. ...

  2. MySQL阿里云安装问题小记

    1. [root@iZ2zeg11g0cdei5171kqskZ mysql]# ./scripts/mysql_install_db --user=mysql FATAL ERROR: please ...

  3. BootStrap的入门和响应式的使用

    在做前端开发中,其实有百分之四十的时间用来布局写样式,百分之三十用来写JS逻辑交互,百分之三十时间用来测试调bug,可以看的到的是,用在布局+样式的时候会比较多, 所以会有很多的前端框架诞生,例如bo ...

  4. 使用dropwizard(6)-国际化-easy-i18n

    前言 Dropwizard官方文档并没有提供国际化的模块,所以只能自己加.Spring的MessageResource用的很顺手,所以copy过来. Easy i18n 在整合Dropwizard的时 ...

  5. cmd+任务管理器解决端口被占用的问题

    1.打开cmd命令行 2.输入命令netstat –ano,会显示所有被占用的端口号以及占用该端口的程序所对应的进程号. (local address下面是端口号,PID是占用端口的某程序的进程号) ...

  6. (五)solr7.1.0之solrJ的使用

    (五)solr7.1.0之solrJ的使用 下面是solr7的官网API介绍: 网页翻译的不是很准确,只能了解个大概,基本能获取如下信息: 一.构建和运行SolrJ应用程序 对于用Maven构建的项目 ...

  7. java如何声明一个数组用来存储随机生成的字母并且保证不重复

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Monaco } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px ...

  8. SaltStack 架构自动部署 03

    架构图 模块化部署 系统模块:系统优化,内核参数,网络参数 功能模块:如:nginx,tomcat, 业务模块: 1.在salt-master端修改配置文件 [root@01 salt]# vim / ...

  9. Cell重用时数据混乱的管理方法

    UITableView继承自UIScrollview,是苹果为我们封装好的一个基于scroll的控件.上面主要是一个个的UITableViewCell,可以让UITableViewCell响应一些点击 ...

  10. 【MySQL疑难杂症】如何将树形结构存储在数据库中(方案一、Adjacency List)

    今天来看看一个比较头疼的问题,如何在数据库中存储树形结构呢? 像mysql这样的关系型数据库,比较适合存储一些类似表格的扁平化数据,但是遇到像树形结构这样有深度的人,就很难驾驭了. 举个栗子:现在有一 ...