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都没有影响。
分享到:
相关推荐
Xfire客户端调用webservice接口所需 jar包,亲测可用。
cxf_axis_xfire客户端调用的几种方法[收集].pdf
webservice ixfir 客户端端开发 对象传递使webservice开发更加简单快捷
xfire,服务端和客户端实现 xfire调用webservice
此程序demo详细描述的从发布接口到调用接口的全部过程,详细描述了Xfire调用webservice参数无法传递的问题。
java使用XFire调用webService接口
此程序demo详细描述的从发布接口到调用接口的全部过程,详细描述了Xfire调用webservice参数无法传递的问题。
xfire开发webservice与调用 用起来比axis简单,容易上手。没有axis那么复杂。性能也比axis好。附件里面包含教程文档及实例代码
cxf_axis_xfire客户端调用的几种方法.docx
java用XFire开发调用webService例子知识.pdf
spring+xfire( 编写webservice完整配置+案例)
Java使用XFire调用WebService接口.docx
webservice服务,使用Xfire框架调用服务的常见客户端代码
NULL 博文链接:https://zhangzhaoaaa.iteye.com/blog/1718819
使用xfire开发webservice的客户端需要的完整jar包,直接导入开放就可以用了。使用Xfire构建JAVA的webService全过程(从服务端到客户端)
java xfire调用webservice 调用本地自己写的webService 调用网站webxml.com.cn的webservice
xfire客户端生成自动生成java代码调用
xfire客户端应该具有的JAR,最全最适宜。xfire客户端应该具有的JAR,最全最适宜。xfire客户端应该具有的JAR,最全最适宜。
xfire客户端eclipse插件....非常有用