Ошибка чтения с превышением времени ожидания — javax.xml.ws.soap.SOAPFaultException

Я пытаюсь отладить критическую проблему, когда приложение JSP видит время ожидания запроса при вызове удаленной веб-службы.

Я должен уточнить, что тайм-аут не происходит постоянно, для небольших запросов веб-служба возвращает ответ.

Я попытался увеличить значение тайм-аута на сервере WebLogic> Протоколы> HTTP> Тайм-аут и продолжительность публикации. Я также попытался установить свойства JAX-WS в моем spring.xml следующим образом:

<util:map id="jaxwsCustomProperties">  
    <entry key="com.sun.xml.ws.request.timeout">  
        <value type="java.lang.Integer">650000</value>  
    </entry>  
    <entry key="com.sun.xml.ws.connect.timeout">  
        <value type="java.lang.Integer">650000</value>  
    </entry>  
</util:map> 

Вывод консоли:

org.springframework.remoting.jaxws.JaxWsSoapFaultException: Request timeout.
Read timed out; nested exception is javax.xml.ws.soap.SOAPFaultException: Request timeout.
Read timed out
    at org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.doInvoke(JaxWsPortClientInterceptor.java:395)
    at org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.invoke(JaxWsPortClientInterceptor.java:379)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy72.getDeviceList(Unknown Source)
    at com.company.msr.web.actionbean.DeviceListProcessor.getDeviceList(DeviceListProcessor.java:223)
    at com.company.msr.web.actionbean.MsrMainActionBean.listToJson(MsrMainActionBean.java:287)
    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)
    at net.sourceforge.stripes.controller.DispatcherHelper$6.intercept(DispatcherHelper.java:467)
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158)
    at net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113)
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)
    at net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74)
    at net.sourceforge.stripes.controller.DispatcherHelper.invokeEventHandler(DispatcherHelper.java:465)
    at net.sourceforge.stripes.controller.DispatcherServlet.invokeEventHandler(DispatcherServlet.java:278)
    at net.sourceforge.stripes.controller.DispatcherServlet.service(DispatcherServlet.java:160)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292)
    at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:247)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    at com.company.msr.web.actionbean.UserAccessFilter.doFilter(UserAccessFilter.java:53)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    at com.company.msr.web.actionbean.filter.AjaxFilter.doFilter(AjaxFilter.java:29)
    at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:42)
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3496)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(Unknown Source)
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2180)
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2086)
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1406)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
Caused by: javax.xml.ws.soap.SOAPFaultException: Request timeout.
Read timed out
    at com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:188)
    at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:108)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:119)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
    at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
    at $Proxy108.getDeviceList(Unknown Source)
    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)
    at org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.doInvoke(JaxWsPortClientInterceptor.java:416)
    at org.springframework.remoting.jaxws.JaxWsPortClientInterceptor.doInvoke(JaxWsPortClientInterceptor.java:392)

Я был безуспешен со всеми попытками. Любые идеи о том, как решить эту проблему, приветствуются.

Спасибо.


person user1247742    schedule 04.02.2014    source источник
comment
Какую реализацию JRE/JAX-WS вы используете?   -  person Paul Vargas    schedule 04.02.2014
comment
Вы связались с серверной командой? Однажды я столкнулся с аналогичной проблемой для доступа к файлу WSDL внешнего сервера. Некоторое время показывалось, а временами нет. После проверки с серверной командой они подтверждают, что развертывали свое приложение на двух разных серверах, и один из них не работал. В какой-то мере мои запросы сводились к одному, а иногда к верхнему. Я не знаю, поможет ли это вам, но участие на стороне сервера может быть полезным.   -  person Salman    schedule 16.02.2015


Ответы (1)


Попробуйте установить следующее для своего веб-сервера (вкладка «Запуск сервера» или поместите его в свой скрипт startWebLogic.sh):

Указывает в секундах, как долго клиентское приложение, пытающееся вызвать веб-службу, ожидает установления соединения. По истечении указанного времени, если соединение не было установлено, время попытки истекает.

-Dweblogic.http.client.defaultConnectTimeout=650000

Указывает в секундах, как долго клиентское приложение ожидает ответа от вызываемой им веб-службы. По истечении указанного времени, если ответ не получен, время ожидания клиента истекает.

-Dweblogic.http.client.defaultReadTimeout=650000

Ссылки здесь:

http://docs.oracle.com/cd/E14571_01/web.1111/e13760/client.htm#i227120

http://docs.oracle.com/cd/E29597_01/fusionapps.1111/e14496/compliance.htm

person Display Name is missing    schedule 04.02.2014
comment
Спасибо за комментарий. Я пробовал это, но не повезло. Также попытался установить -Dsun.net.client.defaultConnectTimeout=650000 -Dsun.net.client.defaultReadTimeout=650000 -Dweblogic.wsee.transport.read.timeout=650000, ни один из них, похоже, не разрешает тайм-аут. - person user1247742; 05.02.2014