2014-02-04 28 views
0

Я пытаюсь отладить критическую проблему, когда приложение JSP видит тайм-ауты запроса при вызове удаленной веб-службы.Прослушивание ошибки времени - javax.xml.ws.soap.SOAPFaultException

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

Я попытался увеличить значение таймаута в сервере 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) 

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

Спасибо.

+0

Какая реализация JRE/JAX-WS вы используете? –

+0

Вы проверили с командой на стороне сервера? Однажды я сталкиваюсь с аналогичной проблемой для доступа к WSDL-файлу внешнего сервера. Некоторое время он показывал, а иногда и нет. После проверки с командой сервера они подтверждают, что они развертывали свое приложение на двух разных серверах, и один из них был отключен. Некоторые из того, как мои просьбы приходили вниз, один и несколько раз поднимались вверх. Я не знаю, поможет ли это вам, но привлечение сервера может оказаться полезным. – Salman

ответ

0

Попробуйте установить следующее для вашего веб-сервера (Server Запустить вкладку или положить его в 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

+0

Спасибо за комментарий. Я пробовал это, но не повезло. Также попытался установить параметр -Dsun.net.client.defaultConnectTimeout = 650000' '-Dsun.net.client.defaultReadTimeout = 650000'' -Dweblogic.wsee.transport.read.timeout = 650000', ни один из них, похоже, не решил тайм-аут. – user1247742

Смежные вопросы