2007-12-07
项目一期结束后的思考。怎么样改善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功能的确让人心动。不过是收费的,而且相关的使用经验和资料太少,风险比较大。
应该选择哪种方法解决问题,希望有经验的大大给点经验。
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功能的确让人心动。不过是收费的,而且相关的使用经验和资料太少,风险比较大。
应该选择哪种方法解决问题,希望有经验的大大给点经验。
评论
wufan0023
2008-05-22
我的项目是使用嵌入Tomcat 在debug模式下可以实现热部署,但是有些文件的修改是不行的。还是会有重启的情况。一般性的修改java code 是可以的。
mmwy
2007-12-14
auauau 写道
javarebel 现在正在用,感觉启动速度慢了一倍,不过调试的效果还不错。我采用spring框架,新增加一个方法或者类,还是需要reload context的。
按照 mmwy 的方法,我没有设置成功,能不能再详细介绍一下,比如tomcat、eclipse版本都是什么。
按照 mmwy 的方法,我没有设置成功,能不能再详细介绍一下,比如tomcat、eclipse版本都是什么。
eclipse-platform-3.3.1.1-win32
eclipse-JDT-3.3.1.1
eclipse-PDE-3.3.1.1
eclipse-CVS-Client-3.3.1.1
dtp_1.5.1_101607
emf-sdo-runtime-2.3.1
xsd-runtime-2.3.1
GEF-runtime-3.3.1
wtp-R-2.0.1-20070926042742
Tomcat是5.5.25和6.0.14
JDk1.6.0U3
auauau
2007-12-14
javarebel 现在正在用,感觉启动速度慢了一倍,不过调试的效果还不错。我采用spring框架,新增加一个方法或者类,还是需要reload context的。
按照 mmwy 的方法,我没有设置成功,能不能再详细介绍一下,比如tomcat、eclipse版本都是什么。
按照 mmwy 的方法,我没有设置成功,能不能再详细介绍一下,比如tomcat、eclipse版本都是什么。
永远的小菜
2007-12-13
这个图形是在lomboz下的
wplqw
2007-12-13
2、Session中保存的对象没有实现Serializable接口。
=======================
有一定道理,
原来在weblogic部署一项目得时候偶尔出现这个提示
This attribute will be lost
upon redeployment. This message is logged only once per session.
后来发现是一个HttpSessionBindingListener得实现类没有串列话造成得,导致在重部署得时候该HttpSessionBindingListener从会话上下文中丢失.后来实现了Serializable,就没这个提示了.
=======================
有一定道理,
原来在weblogic部署一项目得时候偶尔出现这个提示
This attribute will be lost
upon redeployment. This message is logged only once per session.
后来发现是一个HttpSessionBindingListener得实现类没有串列话造成得,导致在重部署得时候该HttpSessionBindingListener从会话上下文中丢失.后来实现了Serializable,就没这个提示了.
neuzhujf
2007-12-13
在网上查查关于Session序列化的问题。
当Reload的时候,Tomcat会将当前的Session进行序列化,
然后启动完成后再把Session恢复。
所以Session应该不会失效。
失效的原因:
1、相关的配置不对;
2、Session中保存的对象没有实现Serializable接口。
供讨论。
当Reload的时候,Tomcat会将当前的Session进行序列化,
然后启动完成后再把Session恢复。
所以Session应该不会失效。
失效的原因:
1、相关的配置不对;
2、Session中保存的对象没有实现Serializable接口。
供讨论。
boreas
2007-12-13
sorphi 写道
boreas 写道
mmwy的做法我有一个疑问,虽然服务器没有重启,session也未失效,可是修改的类起作用了吗?尤其是静态常量的一些修改
试一下就知道了啊,起作用。
谢谢你了,因为我用的MyEclipse插件,所以没有试。MyEclipse修改类是不用重启的,但是常量和配置文件修改是需要手动重启的,否则也不起作用。所以有了上面的问题。
e3002
2007-12-13
我的怎么没有那个图形界面啊。tomcat5.5
velna_007
2007-12-12
试了一下,修改的类被重新加载了,但静态配置文件还是没有起作用,这个估计需要所使用的框架的支持了,不是tomcat能说了算的
fkpwolf
2007-12-12
JPDA(Java Platform Debugger Architecture)
sorphi
2007-12-12
boreas 写道
mmwy的做法我有一个疑问,虽然服务器没有重启,session也未失效,可是修改的类起作用了吗?尤其是静态常量的一些修改
试一下就知道了啊,起作用。
boreas
2007-12-12
mmwy的做法我有一个疑问,虽然服务器没有重启,session也未失效,可是修改的类起作用了吗?尤其是静态常量的一些修改
vaja
2007-12-11
我也觉得不用嵌入式版本,设置 reloadable 为 true 即可。
lzmhehe
2007-12-10
以前使用tomcat 知道修改reloadable 可以支持热部署
但是现在使用weblogic 那么在myeclipse环境下怎么支持呢
我的开发和发布目录是同一个
但是现在使用weblogic 那么在myeclipse环境下怎么支持呢
我的开发和发布目录是同一个
sswh
2007-12-10
引用
1:改用Tomcat 的嵌入式版本。<br />
优点:启动速度更快,wtp上publish阶段所需要的copy 文件的时间可以节约下来。<br />
优点:启动速度更快,wtp上publish阶段所需要的copy 文件的时间可以节约下来。<br />
不用嵌入式版本,直接把Tomcat当成Application来启动,也可以省下“publish阶段所需要的copy 文件的时间”。
启动main class指定为:org.apache.catalina.startup.Bootstrap
启动程序参数:start
启动虚拟机参数:-Dcatalina.base="D:\eclipse\workspace\test\Server" -Dcatalina.home="D:\apache-tomcat-5.5.23" -Djava.endorsed.dirs="D:\apache-tomcat-5.5.23\common\endorsed"
classpath指定为:bootstrap.jar、tools.jar、commons-logging.jar
source根据需要添加,主要为方便调试时跟踪进源代码。
ygxdha
2007-12-10
非常感谢mmwy
tomcat5.5 tomcat6.用debug模式启动只要按照你的方式设置成reloadable后。就可以进行热部署
wplqw
2007-12-08
参照mmwy的图例,tomcat 6确实可以热部署了,而且会话也没丢.
mmwy
2007-12-08
直接改配置文件的方法

mmwy
2007-12-08
4、
mmwy
2007-12-08
图形界面模式解决问题步骤
1、
2、
3、
1、
2、
3、
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 920 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
S2Dao 实现分页的一些经验
感觉很不错!不过我的看法都是一般不要用数据库上的一些特有功能。分页其实自己实现也 ...
-- by 20062633 -
项目一期结束后的思考。怎 ...
我的项目是使用嵌入Tomcat 在debug模式下可以实现热部署,但是有些文件的 ...
-- by wufan0023 -
S2Dao 实现分页的一些经验
哎.本来就茫茫然了 又看到最后的几句,,,就完全没的兴趣了 使用Resu ...
-- by cindy_taozhiang -
项目一期结束后的思考。怎 ...
auauau 写道javarebel 现在正在用,感觉启动速度慢了一倍,不过调试 ...
-- by mmwy -
项目一期结束后的思考。怎 ...
javarebel 现在正在用,感觉启动速度慢了一倍,不过调试的效果还不错。我采 ...
-- by auauau






评论排行榜