org.apache.axis2.AxisFault: Timeout waiting for connection
Posted 新梦起航
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了org.apache.axis2.AxisFault: Timeout waiting for connection相关的知识,希望对你有一定的参考价值。
问题背景:
RPCServiceClient在调用webService接口调用的时候,如果一段时间内访问量过多,就会出现
org.apache.axis2.AxisFault: Timeout waiting for connection 链接超时问题,一开始以为网络原因,但这个问题出现的频次有点多,只要访问量一多就直接Timeout waiting for connection。
调用的收使用axis2 是1.7 ,查阅网上相似问题,很多解答是这个是1.5.1之后的一个bug.
解决办法:
1、版本降到 1.5 就可以解决。(认为不是好的解决办法)
2、参考别人的例子:
在代码中加入一些配置可以得到解决。
RPCServiceClient client = new RPCServiceClient();
Options options = client.getOptions();
//设置采用https协议
final SSLContext sslCtx = SSLContext.getInstance("TLS");
sslCtx.init(null, new TrustManager[]new TrustAllTrustManager(), null);
options.setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER, new Protocol("https",
(ProtocolSocketFactory) new SSLProtocolSocketFactory(sslCtx), 8443));
options.setTimeOutInMilliSeconds(100000);
//解决连接超时
options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, true);
//解决连接超时
options.setManageSession(true);
EndpointReference epf = new EndpointReference(address);
options.setTo(epf);
QName qName = new QName(queryUrl, "productRegistration");
Object[] response = client.invokeBlocking(qName, new Object[]user, pwd, scatteredInvestString, new Class[]String.class);
//解决连接超时
options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, true);
options.setManageSession(true);
client.cleanupTransport();
加入的代码有三行:
options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT, true);
options.setManageSession(true);
client.cleanupTransport();
但是第二中方法如果数据量过多还是报 Timeout waiting for connection
以上是关于org.apache.axis2.AxisFault: Timeout waiting for connection的主要内容,如果未能解决你的问题,请参考以下文章