- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Wicket1.3中Class热加载--使用篇.doc
Wicket1.3中Class热加载--使用篇
Wicket是Apache网站下面的一个顶级项目,是类似于ASP.Net的Web开发框架,受到很多开发者的好评。其最新的正式版本是1.3.5,正在开发的版本是1.4。
1.3x版本系列是Wicket框架真正走向成熟的标志版本,在该版本中提供了Stateless页面和控件,以及DiskPageStore支持文件存取,以避免大量Stateful控件占用过多内存引致OOM,而这一直是Wicket框架被人攻击的关键点。另外对于开发人员来说,特别值得一提的则是它在1.3版本中支持了更好的Class热加载。
其实J2EE开发人员都知道在J2EE应用程序的开发中,最麻烦的往往是调试。虽然JDK已经对类的热加载提供了很好支持,当JVM以调试模式启动的时候,可以在更改代码以后,立即看到改动后的效果,但是代码的修改往往只限于方法的实现,如果在类中添加戜删除了一个Field或者是一个Method(该操作等于修改了类的签名),那么JDK的热加载就无法正常生效。虽然大部分的J2EE应用服务器(如Tomcat,WebLogic)都声称自己提供了Hot Deploy功能,当检测到类文件被更新以后,可以重新加载相应的Web应用。但对于大部分的开发人员来说,这种Hot Deploy功能更象是一个鸡肋,看不出什么实际价值。比如说如果在Session中放置了不支持序列化的对象,或者做了动态类增强,那么所谓的Hot Deploy几乎是百分百出错。以Tapestry3.04版本为例(它使用了CGLib做类增强),在Tomcat5和WebLogic10环境上(其它版本应该也是相同的,但没有进行过测试),没有一次能够正确的Hot Deploy。因此每一次涉及到类签名的修改,都会重新Deploy应用程序(结果就是经常性的OOM),甚至是直接重新启动应用服务器。即使现在很多开发人员的硬件已经可以算的上高配置,但进行上述操作,仍然是一个非常耗时的操作。在我2004年的记忆中,当应用程序较大时,每天近二分之一的时间在等待服务器的启动(或许另外一半时间在等待服务器的关闭)。
虽然Wicket1.2X以前的版本已经很好的支持POJO,而且对单元测试提供了很好的支持,但是当在应用服务器上运行时,仍然避免不了要修改代码,所以服务器加载类仍然是一个问题,一件非常痛苦的事情。
在Wicket1.3中,Wicket小组使用了定制的ClassLoader结合Web应用服务器的Filter规范,从而提供新的Class热加载功能,即使类的签名有所变更(如Class中添加或移除了新的Field,Method),也能够正确的加载新类。下面将用一个示例来演示Wicket1.3提供的这一新功能。
为了更好的分析Wicket1.3是如何实现Class热加载功能,先将Wicket1.3.5的相关源代码全部导入Eclipse中,作为一个Web项目,并配置一个Tomcat5作为测试用的Web服务器,具体的操作步骤就不在这里说明了,有兴趣的读者可以参考我在《Wicket开发指南》一书的相关章节,也可以参见这篇文章《导入Wicket项目》,从而在本地建立相应的开发环境。我这里使用的是Eclipse3.4,但Eclipse3.2和Eclipse3.3都可以,并没有任何区别。本机建立后相应环境的界面如下:
Wicket项目放置了Wicket的源代码,用来展示Wicket的热加载功能。而Servers项目是Eclipse中WTP平台用来定义Web服务器的配置项目,为了避免Tomcat自动Hot Deploy,需要关闭该功能。请打开Servers下面子目录中的Server.xml,并将如下所示的默认配置进行修改。
原配置为:
Context docBase=Wicket path=/Wicket reloadable=true source=org.eclipse.jst.j2ee.server:Wicket/
修改新配置为:
Context docBase=Wicket path=/Wicket reloadable=false source=org.eclipse.jst.j2ee.server:Wicket/ 通过将reloadable的属性改为false,从而关闭Tomcat的Hot Deploy功能。
首先看一下Wicket自带例子中一个简单的Java类,代码如下:
package org.apache.wicket.examples.helloworld;
import org.apache.wicket.examples.WicketExamplePage;
import org.apache.wicket.markup.html.basic.
您可能关注的文档
最近下载
- americanculture小学英语美国文化专题.pptx VIP
- 中国珠宝首饰传统文化 夏商周 中国古代夏商周(商)首饰种类2.pptx VIP
- 大学生科技创新课程之中美青年创客大赛(西南交通大学)中国大学MOOC 慕课 章节测验 期末考试答案.docx VIP
- 中国珠宝首饰传统文化 夏商周 中国古代夏商周(夏)首饰种类1.pptx VIP
- 【课程思政案例】《机械设计基础》.docx VIP
- 2025中级注册安全工程师《安全生产技术基础》考前密训10页纸.docx VIP
- 科研伦理与学术规范期末考试答案.docx VIP
- 检验科重点专科汇报.pptx VIP
- 重大社2024《财务实训教程—智能财务共享》教学课件-费用共享.pptx VIP
- AmericanCulture.ppt VIP
文档评论(0)