读书人

项目一期结束后的思考。如何样改善tom

发布时间: 2012-11-19 10:18:51 作者: rapoo

项目一期结束后的思考。怎么样改善tomcat的工作环境
项目一期已经完成。在最后的测试,bug修改,回归阶段,eclipse3.3 + wtp + tomcat5.5+jdk1.5给整个项目组带来了巨大的无力感。问题出在hot deploy上,在上面所述的环境下,任何java源代码的更改都会导致wtp的重启,session的失效,之前的页面操作需要重兴做一遍才能回到需要测试的页面。如果java web项目能做到ruby那样的hot deploy该多好啊。可惜项目2期依然是java的环境,看来只有自己想办法改善了。查了下网上的资料,大概有如下几条路可以走。

1:改用Tomcat?的嵌入式版本。
优点:启动速度更快,wtp上publish阶段所需要的copy 文件的时间可以节约下来。

疑问:Tomcat?的嵌入式版本是否支持hot deploy。感觉需要tomcat支持hot deploy 需要修改tomcat的classloader机制。

2:修改tomcat的classloader机制。在classloader的分层里面,tomcat的 classloader属于app 级别的classloader。可以通过修改tomcat的源代码来解决java类修改不需要重启tomcat的功能。

疑问:网上该方法的资料很少,javaeye上也只看到大家讨论过修改web中的配置文件,不需要重启tomcat的讨论,一切不确定因素太多了,项目等不得。

3:改用classfish v2来替代tomcat。
测试过一下。虽然不需要重启,不过build的时间依然不短,而且session还是失效了。效果没有现象中的理想。

4:wtp插件的问题。
将wtp插件改成使用sysdeo 的tomcatplugin插件。tomcatplugin插件如果发现有java文件修改,如果该文件的修改是tomcat 的classloader不支持hotdeploy,会给你提示。让你选择是否重启,这个比wtp已经人性化一点了。不过还是不能实现hotdeploy。

5:使用 javarebel

看javarebel的官网,上面提到的hotswap功能的确让人心动。不过是收费的,而且相关的使用经验和资料太少,风险比较大。


应该选择哪种方法解决问题,希望有经验的大大给点经验。classpath指定为:bootstrap.jar、tools.jar、commons-logging.jar
source根据需要添加,主要为方便调试时跟踪进源代码。StandardContext context = (StandardContext) this.embedded.createContext(contextPath, absolutePath);context.setReloadable(reloadable);

tomcat 可以 reloadable
29 楼 sunrie 2008-08-27 使用嵌入tomcat,用debug方式,是不需要重启就redeploy的

读书人网 >软件架构设计

热点推荐