`
jnn
  • 浏览: 283522 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CXF HTTP Jetty5 To Jetty6

    博客分类:
  • Java
阅读更多

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

 

 

 

分享到:
评论

相关推荐

    CXF+Jetty发布WebService

    CXF+Jetty发布WebService

    cxf-jetty:说明:使用cxf内置的jetty发布ws(基于soap协议)服务使用spring + cxf发布ws服务案例请下载

    cxf-jetty:说明:使用cxf内置的jetty发布ws(基于soap协议)服务使用spring + cxf发布ws服务案例请下载源码

    Cxf + Jetty发布相同问题

    NULL 博文链接:https://windfeng.iteye.com/blog/2026030

    CXF2.6.4+Spring3.1.1+Jetty7.5.4

    CXF2.6.4+Spring3.1.1+Jetty7.5.4三个开源框架整全发布webservice,方便快捷,再使用前请阅读项目包中log.log文件,方便你快速建立程序。

    cxf-rt-transports-http-jetty-3.0.2.zip

    jcabi-aspects.zip,方便实用的Java注释集合

    jetty-6.1.2

    jetty-6.1.2 包含 CXF 所需要的包

    cxf_spring全部jar包

    commons-logging-1.1.1.jar,cxf-2.7.6.jar,jetty-continuation-8.1.7.v20120910.jar,jetty-http-8.1.7.v20120910.jar,jetty-io-8.1.7.v20120910.jar,jetty-server-8.1.7.v20120910.jar,jetty-util-8.1.7.v...

    apache-cxf-2.3.0-jar

    cxf-webervice.jar包 cxf-2.3.0 wsdl4j-1.6.2 XmlSchema-1.4.7 jetty-util-7.2.2 jetty-service-7.2.2 jetty-http-7.2.2 jetty-io-7.2.2 jetty-contionuation-7.2.2

    cxf+spring webservice jar包

    jetty-http-7.5.4.v20111024.jar jetty-io-7.5.4.v20111024.jar jetty-security-7.5.4.v20111024.jar jetty-server-7.5.4.v20111024.jar jetty-util-7.5.4.v20111024.jar joda-time-1.6.2.jar js-1.7R2.jar json-lib...

    cxf(jax-ws)+spring+hibernate整合包

    javax.ws.rs-api-2.0-m10.jar,jaxb-api-2.2.6.jar,jaxb-impl-2.2.6.jar,jaxb-xjc-2.2.6.jar,jaxws-api-2.1-1.jar,jettison-1.3.4.jar,jetty-continuation-8.1.7.v20120910.jar,jetty-http-8.1.7.v20120910.jar...

    apache-cxf-2.1.3

    依赖的包: commons-logging-1.1.jar geronimo-activation_1.1_spec-1.0-M1.jar (or Sun's Activation jar) geronimo-annotation_1.0_spec-1.1.jar (JSR 250) geronimo-javamail_1.4_spec-1.0-M1.jar...cxf-2.1.jar

    websphere下部署CXF项目jar包冲突问题解决方式

    在websphere8.5 下部署含有CXFwebservice的war包无法正常启动,而相应的war包在tomcat上是可以正常启动的,通过后台的日志分析大致可以定位为相关的cxf类无法找到,其实这些类在项目的lib目录下都是存在的,莫名其妙...

    cxf-3.1.6的所需要的包

    cxf-3.1.6 web service所需要的最少的包,这里可以不用Tomcat了,用jetty

    cxf-apache

    CXF内置JettyWeb服务器。 使用CXF开发Web Server端组件都需要“接口”和“实现类”两部分。 支持多种数据格式:XML和JSON(Restful)。 并可以与Spring进行快速无缝的整合 灵 活 的 部 署 : ant(build.xml) maven...

    cxf-2.1.4.jar

    jetty-6.1.5.jar jetty-util-6.1.5.jar neethi-2.0.jar saaj-api-1.3.jar saaj-impl-1.3.jar stax-api-1.0.1.jar wsdl4j-1.6.1.jar wstx-asl-3.2.1.jar XmlSchema-1.2.jar xml-resolver-1.2.jar

    cxf3.2.1 最小开发包

    cxf3.2.1自己整理的最少开发包 如不带jetty和spring的依赖包。出现Cannot create a secure XMLInputFactory异常提示时通常是少了woodstox-core-asl-4.2.0.jar或stax2-api这两个包,少这两个包服务能够启动成功,但...

    cxf2.7.6安装包

    理由齐全cxfjar包 antlr-2.7.7.jar aopalliance-1.0.jar asm-3.3.1.jar jetty-continuation-8.1.7.v20120910.jar ......各种

    spring-cxf:Apache CXF 在 Spring Boot 中运行,具有零 XML 配置

    或者,可以通过放入容器(例如 Jetty 或 Tomcat 的 /webapp 目录)来运行。 服务端点 服务端点是<context>/api/hello 。 WSDL/服务的完整路径是: http://localhost:8080/ws-server-1.0/api/hello?wsdl 运行客户

    cxf绑定aegis快速发布webService

    cxf+aegis发布webService配置简单、开发周期短,开发不用太过关心接口具体发布的过程以及接口描述文件wsdl的定义,这些工作都由cxf与aegis完成,如果一个项目中有需要集成接口或者项目比较紧张,采用cxf+aegis发布...

    CXF_SPRING

    Cfx集合spring开发以及客户端调用

Global site tag (gtag.js) - Google Analytics