xfire 客户端调用webservice注意要点

1.超时控制: 
  1.1必要性:如果按照默认的时间去处理,不及时控制超时时间,当服务端接口或者网络出现异常时,客户端请求不能及时释放以至于到达应用服务器的最大线程后有可能会直接down掉应用服务器。  

  1.2超时类型: 

  1.2.1 webservice服务端服务器挂掉或者网络异常导致无法调用服务端接口 
  设置超时方法: 
HttpClientParams params = new HttpClientParams(); 
params.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, (long)3000);      

1.2.2 当webservice服务端网络正常,但是服务接口中出现异常一直不返回结果或者很久才返回结果,这种情况不可能服务客户端不可能长时间等待,数据实时性不高,导致应用的感知度很差。 
设置超时方法: 
  params.setSoTimeout(1000*20);)//20秒超时抛异常 
  控制socket请求通信的超时时间。捕获异常后返回相应的业务处理信息 

2.客户端与接口服务端握手方式: 
  如果接口传输内容数据量不大建议关闭长连接,提高接口性能。 
  params.setParameter(HttpClientParams.USE_EXPECT_CONTINUE,Boolean.FALSE);//关闭长连接 

3.如果接口传输数据量很大建议采用GZip压缩方式传输,提高接口性能 
   在XFire中启动GZip压缩要用到一个开源的Filter:PJL Compressing Filter。这个Filter的最新版本是1.7,自1.5.0开始该工程开始构建于JDK5.0,因此在JDK1.4环境下只能使用1.4.6(这个版本会与高版本同步更新)。下载地址: http://sourceforge.net/projects/pjl-comp-filter/  

配置方法: 
服务端启动GZip:在服务端启动GZip只需将PJL Compressing Filter下的jar包(用到的)导入到web的/WEB-INF/lib目录下。并在web.xml文件中增加如下配置: 
注意: 此filter必须放在servlet前面  
  <filter> 
              <filter-name>CompressingFilter</filter-name> 
              <filter-class> 
                     com.planetj.servlet.filter.compression.CompressingFilter 
              </filter-class> 
              <init-param> 
                     <param-name>debug</param-name> 
                     <param-value>false</param-value> 
              </init-param> 
              <init-param> 
                     <param-name>statsEnabled</param-name> 
                     <param-value>true</param-value> 
              </init-param> 
       </filter> 

       <filter-mapping> 
              <filter-name>CompressingFilter</filter-name> 
              <url-pattern>/*</url-pattern> 
       </filter-mapping> 

客户端启用GZip:客户端启动GZip只要将客户端的GZip的属性设为true却可 
// 启动response压缩 
client.setProperty(CommonsHttpMessageSender.GZIP_RESPONSE_ENABLED,Boolean.TRUE); 
// 启动request压缩 
client.setProperty(CommonsHttpMessageSender.GZIP_REQUEST_ENABLED,Boolean.TRUE); 

// 同时启动response和request压缩 
client.setProperty(CommonsHttpMessageSender.GZIP_ENABLED,Boolean.TRUE); 
注意,当服务端没有启用GZip,客户端启用请求GZip压缩时,会产生SOAP解析错误,如果服务端启动了GZip压缩功能,客户端是否启用GZip都没有影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值