十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。
成都创新互联公司网站建设提供从项目策划、软件开发,软件安全维护、网站优化(SEO)、网站分析、效果评估等整套的建站服务,主营业务为成都网站制作、成都网站建设,app软件定制开发以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。成都创新互联公司深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
1.1对于Java应用程序来说,热部署就是在运行时更新Java类文件。
1.2在基于Java的应用服务器实现热部署的过程中,类装入器扮演着重要的角色。
1.3大多数基于Java的应用服务器,包括EJB服务器和Servlet容器,都支持热部署。
1.4类装入器不能重新装入一个已经装入的类,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序
类加载机制
2.1Java 中的.Java类文件都是经过编译器然后把代码编译为存储字节码的 .Class 文件
2.2这个编译后的.Class文件就包含了各种信息,之后便是要加载到JVM虚拟机中运行使用。
自定义加载器的实现
在Java中,要实现热部署,首先,你得明白,Java中类的加载方式。每一个应用程序的类都会被ClassLoader加载,所以,要实现一个支持热部署的应用,我们可以对每一个用户自定义的应用程序使用一个单独的ClassLoader进行加载。然后,当某个用户自定义的应用程序发生变化的时候,我们首先销毁原来的应用,然后使用一个新的ClassLoader来加载改变之后的应用。而所有其他的应用程序不会受到一点干扰。
热更新的思路:
定义一个用户自定义应用程序的接口,这是因为,我们需要在容器应用中去加载用户自定义的应用程序。
我们还需要一个配置文件,让用户去配置他们的应用程序。
应用启动的时候,加载所有已有的用户自定义应用程序。
为了支持热部署,我们需要一个监听器,来监听应用发布目录中每个文件的变动。这样,当某个应用重新部署之后,我们就可以得到通知,进而进行热部署处理。
景安河南最大的多线服务器托管商,提供专业的双机热备、负载均衡等高可用/高并发服务!
代码修改了不是要解析(或者编译)吗,生成.class文件啊,然后不是要拷贝到容器目录下吗(所谓发布程序),
很久很久以前,程序员修改了代码,发布class文件之后,服务器是要重新启动的(相当费时间,于是喝杯咖啡啥的,java图标...)。
现在很多服务器容器,不许要重启了,修改的class文件直接可以生效。所谓"热加载"。
有了总体实现思路之后,我们可以想到如下几个需要完成的目标:
1、定义一个用户自定义应用程序的接口,这是因为,我们需要在容器应用中去加载用户自定义的应用程序。
2、我们还需要一个配置文件,让用户去配置他们的应用程序。
3、应用启动的时候,加载所有已有的用户自定义应用程序。
4、为了支持热部署,我们需要一个监听器,来监听应用发布目录中每个文件的变动。这样,当某个应用重新部署之后,我们就可以得到通知,进而进行热部署处理。