多次使用axis2调用webservice后,报连接超时错误
发布时间:2020-12-16 21:51:01 所属栏目:安全 来源:网络整理
导读:使用Axis2d的RPCServiceClient调用webservice,连续调用几次web服务后,后台报错,如下所示: org.apache.commons.httpclient.ConnectionPoolTimeoutException: Timeout waiting for connectionat org.apache.commons.httpclient.MultiThreadedHttpConnectio
使用Axis2d的RPCServiceClient调用webservice,连续调用几次web服务后,后台报错,如下所示: org.apache.commons.httpclient.ConnectionPoolTimeoutException: Timeout waiting for connection
at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.doGetConnection(MultiThreadedHttpConnectionManager.java:497)
at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.getConnectionWithTimeout(MultiThreadedHttpConnectionManager.java:416)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:153)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
at org.apache.axis2.transport.http.AbstractHTTPSender.executeMethod(AbstractHTTPSender.java:542)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:199)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:76)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:400)
at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:225)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:435)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:540)
at org.apache.axis2.client.ServiceClient.sendReceive(ServiceClient.java:521)
at com.res.rc.client.RPCClient.callService(RPCClient.java:282)
at com.res.rc.handlers.service.ServiceListHandler.doWebServiceAndReturn(ServiceListHandler.java:337)
at com.res.rc.handlers.service.ServiceListHandler.process(ServiceListHandler.java:126)
at com.res.framework.handler.OnlineHandler.handleRequest(Unknown Source)
at com.res.framework.servlet.GenericFrameworkServlet.doService(Unknown Source)
at com.res.framework.servlet.GenericFrameworkServlet.doPost(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.res.portal.init.SetCharacterEncodingFilter.doFilter(Unknown Source)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
org.apache.axis2.AxisFault: Timeout waiting for connection
at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:203)
at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:619)
解决办法: try
{
serviceClient = new RPCServiceClient ();
Options options = serviceClient.getOptions();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference(wsURL);
options.setTo(targetEPR);
options.setManageSession(true);
options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT,true);
//指定某调用方法的参数值
Object[] opAddEntryArgs = inParams;
Class[] classes = outParamClass;
// 指定要调用的getGreeting方法及WSDL文件的命名空间
QName opAddEntry = new QName(nameSpace,methodName);
Object[] result=serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs,classes);
serviceClient.cleanupTransport();
}
catch (AxisFault e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
options.setManageSession(true);
options.setProperty(HTTPConstants.REUSE_HTTP_CLIENT,true);
serviceClient.cleanupTransport();
可以解决多次调用webservice后的连接超时异常 https://issues.apache.org/jira/browse/AXIS2-4797? 转载:http://www.itkeyword.com/doc/4295590002354076696/class-apache-object (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Angular2:将动态组件作为容器的子代插入到DOM中
- angular – 如何以编程方式打开mat-menu?
- Axis,axis2,Xfire以及cxf对比
- WebService之Axis2系列教程(七)异步调用WebService
- 免费的响应式bootstrap管理员后台界面主题 - Charisma
- Scala是一个更好的println
- AngularJS2 学习笔记——angularjs2架构
- shell从一行文件中获取两列值
- scala – Logger log1-Slf4jLogger在InitializeLogger(总线
- 为什么@ContentChildren不会在我的自定义Angular 2下拉列表