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  

抓狂



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值