Web服务调用超时问题

Posted

技术标签:

【中文标题】Web服务调用超时问题【英文标题】:Web-service invoke timeout issue 【发布时间】:2012-02-26 01:21:03 【问题描述】:

我正在尝试通过存根调用 Web 服务。 它是 wsdl 网络服务

但我在调用它时遇到以下错误。

轴故障 故障代码:http://schemas.xmlsoap.org/soap/envelope/Server.userException 故障子代码: faultString:java.net.SocketTimeoutException:读取超时 故障演员: 故障节点: 故障详情: http://xml.apache.org/axis/stackTrace:java.net.SocketTimeoutException:读取超时 在 org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222) 在 org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129) 在 org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087) 在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633) 在 com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685) 在 com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368) 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834) 在 com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) 在 com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148) 在 com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242) 在 javax.xml.parsers.SAXParser.parse(SAXParser.java:375) 在 org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) 在 org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) 在 org.apache.axis.Message.getSOAPEnvelope(Message.java:435) 在 org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62) 在 org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) 在 org.apache.axis.client.Call.invokeEngine(Call.java:2784) 在 org.apache.axis.client.Call.invoke(Call.java:2767) 在 org.apache.axis.client.Call.invoke(Call.java:2443) 在 org.apache.axis.client.Call.invoke(Call.java:2366) 在 org.apache.axis.client.Call.invoke(Call.java:1812) 在 com.vtech.external.implementation.qantas.QantasServices.DistributorPortSoapBindingStub.getAccommodationAvailability(DistributorPortSoapBindingStub.java:1675) 在 com.vtech.external.implementation.tripAdvisor.bizaction.Test.main(Test.java:68) http://xml.apache.org/axis/主机名:vibpj160

【问题讨论】:

该服务是否真的可用,如果是,它是否接受您的请求?服务前面是否有一些网关会阻止您的呼叫到达网络服务? 是的,网络服务可用... 如果我尝试通过 xml 请求调用相同的服务它会给我想要的响应。 我不确定您是否使用任何工具发送消息,但请检查是否需要增加某些“超时”属性。 我已经将超时属性增加到 2 分钟。 【参考方案1】:

作为

at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)

表明您的请求没有在您的网络服务提供商端进行反序列化。

只需检查请求协议类型即可。

【讨论】:

【参考方案2】:

您的网络服务调用发生超时,您必须使用以下代码增加超时:

((Stub) [your-port or service]).setTimeout(timeout);

此代码设置 Web 服务调用超时。

【讨论】:

以上是关于Web服务调用超时问题的主要内容,如果未能解决你的问题,请参考以下文章

Mule ESB 客户端超时

Spring RestTemplate 连接超时不起作用

.NET Web 服务超时异常

Web发布到服务器上后,调用的webService偶尔会不显示。是啥原因?

急啊!c#怎么通过SOAP调用服务器的方法,已经知道方法名

《Spring Cloud 》Eureka服务调用服务超时重试机制