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 ...
随机推荐
- 制作代码模板的 LaTex 模板
Tex 真的是一个用起来非常舒服的排版工具(对于排版要求高的人来说),去比赛前一天放弃了markdown转pdf来生成代码模板,现学Tex(其实美赛已经用过了:P). 推荐一个链接:TeX - Bea ...
- 深入学习JS执行--创建执行上下文(变量对象,作用域链,this)
一.介绍 本篇继上一篇深入理解js执行--单线程的JS,这次我们来深入了解js执行过程中的执行上下文. 本篇涉及到的名词:预执行,执行上下文,变量对象,活动对象,作用域链,this等 二.预执行 在上 ...
- "MySql.Data.MySqIClient.MySqlProviderSevices”违反了继承安全 性规则。派生类型必须与基类型的安全可访问性匹配或者比基类型的安 全可访问性低。 "解决方法
写Code First 时(使用的是MySql数据库),添加好EntityFrame.MySql.Data .MySql.Data.Entity后 ,写好TestDbContext类. 运行时报出一个 ...
- 将下载到本地的JAR包手动添加到Maven仓库
<!-- https://mvnrepository.com/artifact/ojdbc/ojdbc --><!-- (参数一):下载到本地的ojdbc-10.2.0.4.0.ja ...
- 【魅族Pro7】——BootStrap/JQuery/Canvas/PHP/MySQL/Ajax爬坑之项目总结(一)
前言:这个项目是我们小组团体合作完成的学习项目,项目使用魅族GUI设计和图片素材,响应式重构Pro7官网的首页.子页.商城及购物车,并加入一些创新.我主要负责的是[画屏子页]的项目,这里作为温故知新, ...
- SubTool 电影字幕下载程序
项目地址 https://github.com/backtracker/SubTool 程序说明 作为一个高清电影爱好者,找字幕的痛苦懂的人自然会懂.我在网上找了很久,并没有找到好用的字幕下载程序,于 ...
- nginx 配置入门
之前的nginx配置是对nginx配置文件的具体含义进行讲解,不过对于nginx的新手可能一头雾水. 今天看到个文档不错,翻译过来分享给大家,可以让新手更详细地了解nginx配置,可以说是nginx配 ...
- 多线程 - pthread、NSThread
1. pthread pthread 简单介绍下,pthread是一套通用的多线程的API,可以Unix / Linux / Windows 等徐彤跨平台使用,使用C语言编写,需要程序员自己管理线程的 ...
- centos7 忘记mysql root密码办法
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和 ...
- 5、C#基础 - C#的值类型
1.C#的值类型 有几个特点: 存储在栈里 基于值类型的变量直接包含值(值类型存储实际值). 将一个值类型变量赋给另一个值类型变量时,将复制包含的值. 这与引用类型变量的赋值不同,引用类型变量的赋值只 ...