CXF HTTP Jetty5 To Jetty6

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的功能,还有就是多写测试,写好测试。 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值