Web服务调用超时问题

5

我正在尝试通过存根调用WSDL Web服务。

但在调用时出现以下错误:

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: java.net.SocketTimeoutException: Read timed out
 faultActor: 
 faultNode: 
 faultDetail: 
    {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/}hostname:vibpj160

1
服务确实可用吗?如果是,它是否接受您的请求?有没有一些网关在服务前面阻止您的调用到达 Web 服务? - Gaurav
1
是的,Web服务可用... - mevada.yogesh
1
如果我尝试通过 XML 请求调用相同的服务,它会给我期望的响应。 - mevada.yogesh
1
我不确定您是否使用任何工具发送消息,但请检查是否需要增加某些“超时”属性。 - Gaurav
1
我已经将超时属性增加到了2分钟。 - mevada.yogesh
但是没有运气。仅在30秒内,我就遇到了这个异常。 - mevada.yogesh
2个回答

2

As

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

这表明您的请求在 Web 服务提供商端未被反序列化。

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


1

您的网络服务调用超时了,您需要使用以下代码来增加超时时间:

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

这段代码为 Web 服务调用设置了超时时间。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接