浅谈几种Java Web框架对自动重加载的支持

2007-04-28     推荐:8873093    收藏:5741404    评论:0     来源:IT168

IT168分析评论
当我们在编写软件的过程中,编译,构建,测试的周期的速度直接影响着开发者的生产效率,如果我们必须重新编译,重新构建应用程序,并且重新部署,还有可能重新启动服务器,这将花费很长的时间从而减缓了开发的速度。

一些构建应用程序的平台,特别这些使用动态和脚本语言的,他们允许开发者对应用程序做出修改(代码,模板和配置)并且能够立即看到修改后的结果。

这些有着不同的叫法,例如有的叫自动重新加载,有的叫热部署,平台对和框架对这些性质支持的程度对开发者开发和维持一个web应用程序的效率有着重要的影响。

在Java中自动重新加载

大多数Java web框架都支持自动重新加载,通常以页面模板的标准开始,例如,在一个web应用程序中修改JSP文件,应用服务器就能够检测到所做的变化并能重新运行。

随着web应用程序不断变得复杂,要求重启服务器的时间也会增加,而自动重新加载可能需要更多的时间并有更多的限制,特别的与Rails上的Ruby相比更是如此。

最近几个Java web框架宣布已经增强了对自动重新加载的支持,下面对一些流行的Java web框架进行比较:

Grails

Grails 支持自动重新加载(auto-reloading)带有一些限制:
如果事务属性被设置为false,服务通常仅被重新加载。
在运行时,域的类要与数据库重新映射。如果通过''dbCreate''属性的''update''设置,数据源被配置为自动产生数据
库 ,那么数据源将尽可能更新数据库。改变域类偶尔的要求应用程序重启。

Seam

Seam 1.2.1已经引进了热部署的功能,只有支持Seam JavaBean,并不支持实体运行,也不能支持EJB3组件。

Spring MVC & Web Flow

Spring 2.0.4 允许Spring MVC发报机被重新加载,Spring对支持动态语言就允许在 Beanshell和Groovy中写控制器和验证器,可以不用重启应用就可以重新刷新。


Spring Web Flow与Spring MVC一起使用,Struts 1和2与JSF能够进行导航和web应用程序的状态管理,可以使流能够被重新构建而不用重启服务器。

另外,Spring IDE 2.0支持Spring Web Flow,可以使用Spring IDE 2.0对导航逻辑以图形的方式做出变化,这些变化立刻生效。不用使容器重启。

Struts 2

Struts 2可以使行为重新加载,当他们改变时。

Tapestry 5

在一个开发模型中,Tapestry 4支持HTML模板和页面属性的重新加载,Tapestry 5增加了活动类和模板重新加载的支持。

像其他框架一行,有一些限制:
自动重新加载通常不对JAR文件的资源进行支持。
既然重新加载使用类加载,当与没有被加载的类进行通讯时,这就可那导致ClassCastExceptions 异常。
如果保持对重新加载类引用,则有可能导致内存泄漏。
您可以针对本文进行:[评论]  [收藏]  [推荐]   [查看原文链接]  
  • 共有0条评论  点击查看更多评论
  • 网友评论仅供网友表达个人看法,并不表明e800同意其观点或证实其描述
我想发表评论:
用户名密码
  • 匿名发表
    验证码: