注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 子域部署Exchange服务器详..
 帮助

使用XFire调用WebService需注意的事项


2008-02-27 14:25:10
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。

 


(一):注意过滤输入和输出参数空白字符
如果出现空白字符解析不了导致调用失败,导致下面的异常:
org.codehaus.xfire.fault.XFireFault: Error writing document.. Nested exception is com.ctc.wstx.exc.WstxIOException: Invalid null character in text to output
at org.codehaus.xfire.fault.XFireFault.createFault(XFireFault.java:89)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:83)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.Client.invoke(Client.java:368)

String.trim()一下即可。
 
(二):连接时注意修改一些参数
  比如:HttpClientParams.CONNECTION_MANAGER_TIMEOUT // 设置Timeout
  这其实不止是这里需要,任何网络编程都需要注意此事项。当对方服务死了或网络异常,
如果不做timeout处理,按照默认的时间去处理,将会导致服务积压严重甚至被脱死。
  HttpClientParams.USE_EXPECT_CONTINUE //client handshake
  如果服务不需要传输大量的数据,保持长连接,还是建议关闭掉此功能,设置为false。
否则,在业务量很大的情况下,很容易将服务端和自己都搞的很慢甚至拖死。
  HttpClientParams params = new HttpClientParams();
// 避免'Expect: 100-continue' handshake
params.setParameter(HttpClientParams.USE_EXPECT_CONTINUE,Boolean.FALSE);
//设置ws连接超时时间
params.setParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, 1000);
client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT_PARAMS,params);
 

 

本文出自 “程序人生” 博客,转载请与作者联系!





    文章评论
 
2008-08-21 18:42:50
比如:HttpClientParams.CONNECTION_MANAGER_TIMEOUT // 设置Timeout
这其实不止是这里需要,任何网络编程都需要注意此事项。当对方服务死了或网络异常,
如果不做timeout处理,按照默认的时间去处理,将会导致服务积压严重甚至被脱死。


请问:上述的评述的依据从哪里来的?在代码中,并没有说默认是多少,你如何确认会导致服务器出现问题?
/**
  * Sets the timeout in milliseconds used when retrieving an HTTP connection from the HTTP connection manager.
  */
public void setConnectionManagerTimeout(long timeout) {
  client.getParams().setLongParameter(HttpClientParams.CONNECTION_MANAGER_TIMEOUT, timeout);
}

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: