欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CXF HTTP Jetty5 To Jetty6 博客分类: Java SVNCometXP工作Servlet 

程序员文章站 2024-02-22 09:07:34
...

CXF的HTTP transport原本是基于Jetty5的,但是Jetty6提供了很多新的功能,例如NIO以及通过Comet和Continuations支持异步的Servlet操作。前段时间我的一项工作就是要让CXF 的HTTP module支持Jetty6。

现在这一工作告一段落,写下这篇文章和大家分享一下我的体会。

有关Jetty5到Jetty6的迁移可以参考这篇文章 

由HTTP module是一个CXF的一个基础模块,据说SVN的Branch功能支持有限(ClearCase功能的确强大。谁叫SVN是免费呢,咱还是忍了。),为了不影响 main line 的代码,我采取了以下方式来进行开发。

1。 拷贝 HTTP module 到 HTTP2 module

2。 在 HTTP2 module上面做修改 

3。 等修改差不多完成了,咱再把HTTP module 替换成 HTTP2 module

也许你会问这么做,创建了HTTP2之后HTTP上面的修改如何反映到HTTP2上呢?

开始我想这活大概一个月就完事了,由于HTTP比较稳定这一段时间的修改我可以手工完成。但是在具体操作过程中还是出了一些问题。

先是 HTTP2小改完,我出了一趟半个礼拜的差,等回来跑测试突然发现JettySSLSelectChannelConnector还是一个PreAlpha的状态,我后面又有其他的活,于是HTTP2就此搁置起来了。

这一搁置就是快两个月,期间HTTP module经历过十几次的改动。在这些改动中,有些同志顺道也改了一下HTTP2,但是有大概六七次的改动没有同步到HTTP2中。(别看我记的这么清楚,这些改动我都是一个一个从commit mail中找出来的,这也算是一个教训啊。)

更大的问题是,我没有意识到这么多HTTP的改动没有同步到HTTP2中,以至于前两天做3步操作的时直接将HTTP2的文件拷贝到HTTP中,而不得周末花了快20个小时手工完成了HTTP与HTTP2的合并工作。

XP ,提倡的拥抱变化,其精神就是要将修改变小,而且每次修改都是可以通过测试验证的,这样才能保证我的修改成本不高,可以在不做详细设计的情况下编码,并能够持续的进行集成。

我做这次合并的最大体会是,我没有仔细阅读commit mail来发现HTTP2已经和HTTP有很大不同的,同时由于测试覆盖面的问题,没有发现HTTP2丢失了那些改动,造成了我的3步迁移变成了代价很高的举动。

为了避免悲剧的再次重演,我得好好研究一下SVN Branch的功能,还有就是多写测试,写好测试。