XFire Client的3s lag

在XFire的client端的实现中,默认是采用HTTP1.1来进行请求的,也就是说,会默认在HTTP的request header中加入expect字段。以下是一个请求头的报文。

POST /crowd/services/SecurityServer HTTP/1.1
SOAPAction: ""
Content-Type: text/xml; charset=UTF-8
Accept-Encoding: gzip
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; XFire Client +http://xfire.codehaus.org)
Host: localhost:8080
Expect: 100-continue
Content-Length: 503

你可以看到Expect:100-continue,这是在HTTP1.1中加入的。XFire的实现中,如果server端不支持1.1,那么就会有一个3000ms的timeout,于是这个lag就出现了,3s是一个很大的性能问题了吧。

XFire的client实现依赖于HTTPClient,所以,办法是把expect头给关掉。

client.setProperty(CommonsHttpMessageSender.DISABLE_EXPECT_CONTINUE,"true");

在CXF中已经不再使用HTTPClient来作为客户端的实现代理,而是使用Java的内部实现,包括javax.wsdl等一系列的比较新的API。

XFire在现在看来毕竟还是有点锉了,现在CXF的实现变了很多也成熟很多,如果不是因为有legacy的应用,还是应该用CXF为好。

Comments (1)

  1. 19:16, 2009-11-03Chris  / Reply

    技术贴啊!

Leave a Reply

Allowed Tags - You may use these HTML tags and attributes in your comment.

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Pingbacks (0)

› No pingbacks yet.