热部署javaweb应用程序的方法
对于Java应用程序来说,热部署就是在运行时更新Java类文件。在基于Java的应用服务器实现热部署的过程中,类装入器扮演着重要的角色。大多数基于Java的应用服务器,包括EJB服务器和Servlet容器,都支持热部署。类装入器不能重新装入一个已经装入的类,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序。
一、热部署介绍
热部署对于程序开发的好处就不用多说了,这里记录一下自己的使用过程:
lipse的年代,那时候通过myeclipse新建的web项目,通过debug方式启动,可以获得修改java类中的方法体和jsp页面立即生效的功能;这是纯eclipse所没有的。
2.后来出了jrebel可以获得新增java类和方法也无需重启应用服务器即可生效的功能,当然这个功能不完美,有缺陷。
3.随着eclipse的`升级,推出了Jee版本的eclipse,也就逐渐淘汰了myeclipse,但是JEE版本的eclipse和tomcat配合,即便使用debug模式启动,修改java类还是会导致整个应用的重新加载,这是不能忍受的,这时候,发现了jetty配合JEE版本的 eclipse可以完美的实现热加载,即改即用,很方便。
二、热部署过程
先做个说明,没有热部署和有热部署的开发效率真是天差地别的。所以热部署受很多第三方软件包(Struts,Spring,Hibernate)的限制。本来可以热部署的,加入了第三方的包就不可以了。所以,先说明详细的软件环境,和程序配置是非常必要的。
虚拟机:java Tomcat Eclipse Myeclipse
应用程序情况:纯正的sertlet+jsp+javabean,数据库连接使用JDBC-ODBC桥连接Access数据库。没有使用任何第三方软件包,没有使用Struts,Spring,Hibernate.WebRootWEB-INFlib下是空的。
配置方法:
ie登陆http://Tomcat所在的服务器IP:8080/ →点超连接“Tomcat Administration”→ 输入用户名密码登陆→在左侧的功能树中→Tomcat Server→Service(Catalina)→Host(localhost)→Context(/要修改的web项目)→右侧新出现的页面中 →Reloadable设置为true→Save按钮→Commit Changes.
开发时,修改。java文件后,调用这个类时日志提示:
- Reloading this Context has started
这是正在重新加载修改后的。class文件。
j2ee开发插件(这里使用Myeclipse),也可能导致热部署失效。因为插件必须要把编译好的。class文件从工作空间复制到Tomcatwebapps下的项目里。才能使Tomcat得到需要热部署的文件。
最后说一下jreble,网上的资料比较复杂,下面介绍个最简单的方法:
在resin的启动文件,例如中增加:
Resin 3.1+版本:#div_code img{border:0px;} exec $JAVA_EXE -javaagent:/opt/apps/resin/ -jar ${RESIN_HOME}/lib/ $*
Resin 3.0-版本:#div_code img{border:0px;} args=“-J-javaagent:/opt/apps/resin/”
三、小结
在进行java web程序开发过程中,经常遇到这种问题,修改一个java文件(*),需要重启web服务器(如tomcat,weblogic等),部署项目。而起/停服务器浪费了大量的时间。在小项目中,也许我们感觉不到。但对于公司的大型项目:如数据中心,生产等系统开发而言,往往起/停需要等待几分钟时间。更浪费时间的是,对于一个类中的方法的调试过程,如果修改多次,需要反复的启停服务器,那么浪费的时间更多。从上可以看出,我们急需一个可快速起/ 停服务器的工具,来提高我们的开发效率。
-
java基础面试题2017
Java平台是基于Java语言的平台。这样的平台目前非常流行,因此微软公司推出了与之竞争的平台以及模仿Java的C#语言。以下是关于java基础面试题,希望大家认真阅读!非技术问题研究比较深入的领域有哪些;对业内信息的关注渠道有哪些;最近都读哪些书;自己最擅长的技术...
-
2016年《JAVA程序设计》期末考试试题
与传统程序不同,Sun公司在推出Java之际就将其作为一种开放的技术。Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和静态的语言。下面一起来看看《JAVA程序设计》期末考试试题及答案,希望对同学们的复习有所帮...
-
Java认证面试试题及答案
面试是java认证考试环节之一,那么java面试有哪些经典试题呢?下面yjbys小编为大家分享最新java面试经典试题及答案,仅供考生参考!1.Java中的异常处理机制的简单和应用当Java程序违反了Java的语义规则时,Java虚拟机就会将发生的错误表示为一个异常。违反语义规则包...
-
2017年Java程序员面试题集
Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。下面是小编整理的关于Java程序员面试题集,大家一起看看吧!1、面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:1)抽...