{http://xml.apache.org/axis/}stackTrace:java.net.SocketTimeoutException:读取超时

时间:2016-02-26 14:47:16

标签: java web-services soap

我使用了jboss 5.1

我在我的项目中使用了soap webservice。

大部分时间Web服务都有效 正确地

但有时候我有这个错误:

  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: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
    at org.apache.axis.transport.http.HTTPSender.readHeadersFromSocket(HTTPSender.java:583)
    at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:143)
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165)
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
    at org.apache.axis.client.Call.invoke(Call.java:2767)
    at org.apache.axis.client.Call.invoke(Call.java:2443)
    at org.apache.axis.client.Call.invoke(Call.java:2366)
    at org.apache.axis.client.Call.invoke(Call.java:1812)
    at com.web.service.BalanceServiceSoapBindingStub.getInfo(BalanceServiceSoapBindingStub.java:550)
    at com.web.manager.impl.TestManagerImpl.newEmp(TestManagerImpl.java:893)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)

这是我的肥皂客户端代码:

  BalanceServiceServiceLocator balance = new BalanceServiceServiceLocator();
            BalanceServiceSoapBindingStub service = new BalanceServiceSoapBindingStub(new URL(
                        balance.getBalanceServiceAddress()), balance);

   EmployeeEntity employeeDetail = service.getInfo(matricule);

我认为我应该增加超时时间并尝试使用此代码:

  BalanceServiceServiceLocator balance = new BalanceServiceServiceLocator();
                BalanceServiceSoapBindingStub service = new BalanceServiceSoapBindingStub(new URL(
                            balance.getBalanceServiceAddress()), balance);

org.apache.axis.client.Stub s =  service;
            s.setTimeout(new Integer(1000*120));

       EmployeeEntity employeeDetail = service.getInfo(matricule);

是解决问题的最佳方法

已更新:

有时在增加超时后我解决了我的问题 但有时会再次出现相同的错误:faultString:java.net.SocketTimeoutException:read timed out

请注意,soap webservice客户端和服务器位于两个不同的网络范围内

是网络,防火墙的问题 是否可以在防火墙中进行配置以接受HTTP流量,

或如何修改我的代码以处理此异常含义 我在我的应用程序中显示我有网络问题  例如30秒之后没有得到回复

0 个答案:

没有答案