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的主要内容,如果未能解决你的问题,请参考以下文章