BeanSoft's Java Blog
免费电子书/视频《MyEclipse 6 Java 开发中文教程》作者刘长炯官方博客

2008.11.14更新: 加入struts.i18n.reload和修改一天工作为8小时(不算加班,加班2小时一般不算工资),加入了对无法显示行号的传言的验证.

我们知道开发Java EE Web应用最大的弊病当属Redeploy时候无奈的等待. 这是对成本的最大浪费. 假设一个公司有100名开发人员, 每人每小时需要reload应用10次(实际上可能不止十次), 每次耗费10秒, 而每个程序员每小时的薪酬是50元, 那么我们可以计算一下多出的时间:

一小时的等待时间: 100 x 10 x 10 = 10000 秒

一天的等待时间: 10000 x 8 = 80000 秒 = 1333 分钟 = 22 小时

一天的额外成本是: 1111 元

22个工作日的成本: 2,4444 元 ==> 可以再招好几个新员工了!

1年的成本: 29,3333元

OK, 这些讨论仅限于理论上的.

要提高Struts 2开发效率, 最主要的是修改了Struts配置文件后不要重新载入应用就能生效, 这可以通过以下配置做到:

src/struts.properties

struts.devMode=true
struts.i18n.reload=true
struts.configuration.xml.reload=true

这两个选项, 可以保证提供额外的出错信息(帮助开发人员定位错误位置), 国际化资源文件和配置文件修改后可以被立即自动重新载入(注意也能载入include文件的修改), 这个特性是N多其他框架所没有的.

那么另一个常见的问题就是修改了类文件后需要重新载入应用才能生效, 这个问题可以通过JavaRebel来搞定, 下面是 MyEclipse 中的Tomcat配置:

javarebel_myeclipse2

这两招下来, 可以在新加入类以及Struts配置修改后, 完全无需重启或者重新发布即可立即测试! 在JAR包暴多的情况下, 可以让我们不再等待10到20秒了!

JavaRebel在加入父类时无法工作, 但是有人反映说JavaRebel无法正确显示Debug时的类行号, 也许那是老版本时候的事情了, 我个人认为这是谣传(以讹传讹吧), 因为我用了三个月了, 一直还没遇到过, 我用的是最新版. 所谓实践出真知, 各位看截图(除0的代码是新加入的一行):

image

当然了, 也许他们说的是Eclipse特有的Debug模式所产生的问题, 那个所谓的Debug模式启动服务器, 一不小心就给Suspend到Tomcat的某个类中了, 点N次Resume才能见到结果,, 所以我一般不用. 按照我的理解输出内容等等, 查看错误行号等都是调试.

当然,欢迎各位提供无法正确显示行号时的截图. JavaRebel我弄到了一个个人免费的许可, 真的是很好用啊.

posted on 2008-11-13 17:09 BeanSoft 阅读(2634) 评论(12)  编辑  收藏 所属分类: Web Framework
Comments
  • # re: 两招提高Struts2开发生产力!
    zhyiwww
    Posted @ 2008-11-13 18:08
    这一招不错,哈哈

      回复  更多评论   
  • # re: 两招提高Struts2开发生产力![未登录]
    apple0668
    Posted @ 2008-11-13 19:17
    貌似这样配置也要时间来reload的  回复  更多评论   
  • # re: 两招提高Struts2开发生产力!
    beyond
    Posted @ 2008-11-13 22:21
    还可以,不知是否支持struts 1.x  回复  更多评论   
  • # re: 两招提高Struts2开发生产力!
    心梦帆影
    Posted @ 2008-11-14 00:11
    不好意思,我想请问一下以下是怎么解释?
    -noverify -javaagent:d:/javarebel.jar
    是固定不变的吗?还是与jdk的安装路径有关?"d:"是不是指D盘?
    请赐教,谢谢!
      回复  更多评论   
  • # re: 两招提高Struts2开发生产力![未登录]
    beansoft
    Posted @ 2008-11-14 00:15
    JavaRebel是个软件, d是盘符, 搜索 JavaRebel 在左侧或者Google.  回复  更多评论   
  • # re: 两招提高Struts2开发生产力!
    HuangyY
    Posted @ 2008-11-14 08:53
    一天工作不可能24小时,算8小时好了   回复  更多评论   
  • # re: 两招提高Struts2开发生产力!
    隔叶黄莺
    Posted @ 2008-11-14 09:15
    JavaRebel 不能用于调试时跟踪源代码
    另外,还有资源文件修改时的自动加载:
    struts.i18n.reload=true  回复  更多评论   
  • # re: 两招提高Struts2开发生产力!
    system
    Posted @ 2008-11-14 10:30
    一个班级有50名同学, 上课时一个同学说话, 老师停顿了1分钟, 然后对全班的小朋友说: A同学耽误了课堂上1分钟的时间, 咱们全班有50个同学, 那么A同学就一共耽误了大家50分钟的时间, 如果全班每一个同学都耽误大家1分钟的时间, 那么大家一共有50x50=2500分钟的时间都被浪费了...  回复  更多评论   
  • # re: 两招提高Struts2开发生产力(2008.11.14更新)![未登录]
    beansoft
    Posted @ 2008-11-14 11:32
    课堂纪律不管不行, 老师浪费这一次所有人的时间是为了避免以后有更多的人来浪费大家的时间, 例如: 打架, 斗殴, 这些老师能坐而不管嘛, 那以后还有人能认真听讲嘛? 看不出你说的这个例子和本文讲的reload有什么关系, 看得出你也上过学, 会写字, 嘿嘿.  回复  更多评论   
  • # re: 两招提高Struts2开发生产力(2008.11.14更新)!
    fyuan
    Posted @ 2008-11-18 16:13
    多谢~  回复  更多评论   
  • # re: 两招提高Struts2开发生产力(2008.11.14更新)!
    范璐
    Posted @ 2008-11-21 00:52
    不是以讹传讹,我确实是遇到了这种问题,在调试的时候确实是遇到行符找不到的错误,也上网搜了一些内容,说是ant或是不是本eclipse编译的原因,不知道跟javarebel有什么关系,因为在我用原来的老版本的时候没有出现任何问题,而在用1.2.1的时候这种问题就出现了,我用的是myeclipse6.6+tomcat6.0.18,在run模式下不走断点,而在debug模式下就报找不到行符的错误,不知道往这里面怎么截图  回复  更多评论   
  • # re: 两招提高Struts2开发生产力(2008.11.14更新)![未登录]
    a
    Posted @ 2008-11-24 11:35
    最需要的是一个licenses
    能提供不  回复  更多评论   

标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-11-14 10:02 编辑过
 
 

推荐图书:
走出软件作坊》、《悟透JavaScript》、《Head First 设计模式
相关链接:
网站导航: