热部署

使用Jenkins实现Jetty热部署Maven程序(20s极速)

我们两清 提交于 2020-03-04 20:27:05
#一、配置Jetty热部署(start.ini,Jetty版本9.0) jetty.deploy.monitoredDir=webapps jetty.deploy.scanInterval=1 #二、使用脚本启动Jetty cd C:\jetty java -jar start.jar pause #三、配置Jenkins ##1.配置POM(跳过maven test) clean install -Dmaven.test.skip=true ##2.填写Post Steps的脚本(触发Jetty热部署) cd target copy airjok.war C:\jetty\webapps 原本2分钟的构建时间,现在只需要20s!!! So good! 来源: oschina 链接: https://my.oschina.net/u/1270277/blog/532745

Tomcat中jsp热部署实现原理

纵饮孤独 提交于 2019-12-10 08:10:08
我们知道在开发工程的时候 jsp文件是即修改即生效的 ,由于比较好奇就研究了一下 tomcat对于jsp热部署的实现原理 ,总结沉淀一下吧。 Tomcat jsp热部署的实现原理大体是这样的, 每个JSP页面从上次访问到下次访问总是有默认几秒的缓存时间的 , 也就说并不是严格的即修改即生效 , tocmat7默认是有4秒的缓存延迟的 。 这个默认的缓存延迟是在类 EmbeddedServletOptions 的 private intmodificationTestInterval = 4; 这个属性定义的。 如果过了4秒缓存时间即失效,这个时候tomcat就会读取 jsp的modified时间戳和work目录下编译好的class文件的modified的时间戳作对比 。 如果相等则class文件没有过期,则不会重新编译jsp文件,如果过期了则重新将jsp编译成java,并进一步编译成class。同时调用JasperLoader来重新加载这个有jsp编译好的class文件。 下面具体分析一下这个过程: 大体的类通信时序图是这样的: 其中上文说的 时间戳的校验逻辑主要封装在JDTCompiler的isOutDated方法里面 ,这个方法的主要源代码如下: 其中第一个红框就是涉及到的N秒缓存逻辑, 如果缓存没有失效,则不会重新加载 ,这个 ctxt.getOptions(

Tomcat 热部署实现方式源码分析总结

断了今生、忘了曾经 提交于 2019-12-03 06:24:56
研究了一下tomcat的类的热部署的源码实现,总结沉淀一下。Tomat实现热部署主要有两种机制: (1) 一种是类似于Servlet这种类的热部署即在WEB-INF/class目录下的类:实现方式可以概括为 在容器启动的时候起一条后台线程,定时的检测类文件的时间戳变化,如果类的时间戳变掉了,则调用容器的reload的方法,将类重新载入。 那么具体的分析一下: tomcat用来加载servlet的类加载器是WebappClassLoader,但热部署的逻辑不是在这个类加载器里,而是封装在了外围的WebappLoader里面(WebappClassLoader 是WebappLoader的成员变量)。WebappLoader作为一个加载器,其实现了Loader接口,loader接口中定义了两个和热部署密切相关的方法即modified方法和backgroundProcess方法。Modified方法关联了载入器中资源的变化情况,而backgroundProcess则定义了后台线程定时扫描时具体要执行的逻辑。 Tomcat的启动具体可以分解为各级容器的启动(即:Engine,host,context 注意不包含Wrapper, Wrapper是在具体请求的时候初始化的 )和连接器(默认两种连接器Http,ajp)的启动,另外当然还做了一些配置文件的解析这个不多说。

IntelliJ IDEA 使用 Resin + JRebel 实现热部署

柔情痞子 提交于 2019-12-02 03:05:44
官方实例: http://zeroturnaround.com/software/jrebel/intellij-idea-jrebel-tutorial-formerly-javarebel/ 网上有不少基于Tomcat+JRebel热部署的教程,这里简单就 Resin + IDEA + JRebel配置热部署环境步骤小作说明. 1.初始工作: 下载JRebel 破解版的jar包,下载IDEA JRebel的插件,过程略 2.在IDEA下 配置Resin + JRebel 在IDEA下,点击 "Edit Configurations",然后添加一个名为Resin3.x 的服务 configure设置Resin根目录的路径 其中 VM Options的配置如下: -javaagent:C:\Users\Administrator\.IntelliJIdea13\config\plugins\jr-ide-idea\lib\jrebel\jrebel.jar -Xmx512M -Xms512M -XX:MaxPermSize=1024m -noverify MaxPermSize这里设置为1G,因为JRebel热部署的过程中需要占用大量的常量空间,最好设置为512M以上,否则很容易爆MaxPermGen space异常 然后点击Deployment,添加要启动的项目 配置resin

eclipse上使用jrebel插件

China☆狼群 提交于 2019-11-28 17:37:06
tomcat对热部署的支持不是很好,在添加方法,类,以及资源文件的时候常常需要重启服务,像我在公司里面的一个服务起来都要一到五分钟,非常浪费时间.jrebel是第三方做的热部署的工具,非常有用.下面就是在eclipse上面如何使用jrebel插件. 1.通过eclipse install 下载jrebel eclipse插件 地址: http://www.zeroturnaround.com/update-site/ 在获取插件信息后选择安装JRebel(要取消JRebel m2eclipse Integration,否则无法正常安装) 2.安装完成之后重启eclipse,配置需要使用jrebel插件的项目和server. 顺便配置下jrebel打印出日志 3.插件会在选中的项目下自动生成rebel.xml .这个rebel.xml不能直接用,需要修改一下 <classpath> <!-- 这里是eclipse生成的class地址--> <dir name="/home/liubin/workspace/tz/tops-front/tops-front-purchaser/bin"> </dir> </classpath> <web> <link target="/"> <!-- 这里是项目资源文件的地址--> <dir name="/home/liubin/workspace