2013-03-14 2 views
3

Я ищу вход эксперта по этой проблеме.java.net.SocketException в вызове SOAP

У меня есть приложение Java, которое соединяется с удаленной системой через SOAP API. У нас есть такое же приложение (клиент), работающее на нескольких ноутбуках, и при необходимости ударяя по различным средам (dev, test и production). Все в порядке, за исключением одного ноутбука, в котором запросы на производство (только) прерываются с перерывами. Исключением, которое я получаю, приводится ниже:

Mar 14, 2013 10:53:31 AM org.apache.cxf.phase.PhaseInterceptorChain doIntercept 
INFO: Interceptor has thrown exception, unwinding now 
org.apache.cxf.interceptor.Fault: Connection reset 
    at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:95) 
    at org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:466) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251) 
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) 
    at $Proxy49.fareMasterPricerTravelBoardSearch(Unknown Source) 
    at com.ace.amadeus.service.impl.MasterPriceSearchServiceImpl.fareMasterTravelBoardSearch(MasterPriceSearchServiceImpl.java:309) 
    at com.ace.amadeus.controller.MasterPricerController.onSubmit(MasterPricerController.java:321) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Thread.java:722) 
Caused by: com.ctc.wstx.exc.WstxIOException: Connection reset 
    at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:313) 
    at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:93) 
    ... 35 more 
Caused by: java.net.SocketException: Connection reset 
    at java.net.SocketInputStream.read(SocketInputStream.java:189) 
    at java.net.SocketInputStream.read(SocketInputStream.java:121) 
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:312) 
    at sun.security.ssl.InputRecord.read(InputRecord.java:350) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:861) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1262) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1289) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1273) 
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:523) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) 
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1087) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1836) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1794) 
    at org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:42) 
    at org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69) 
    at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:96) 
    at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214) 
    at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:311) 
    ... 36 more 

javax.xml.ws.soap.SOAPFaultException: Connection reset 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:145) 
    at $Proxy49.fareMasterPricerTravelBoardSearch(Unknown Source) 
    at com.ace.amadeus.service.impl.MasterPriceSearchServiceImpl.fareMasterTravelBoardSearch(MasterPriceSearchServiceImpl.java:309) 
    at com.ace.amadeus.controller.MasterPricerController.onSubmit(MasterPricerController.java:321) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) 
    at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
    at java.lang.Thread.run(Thread.java:722) 
Caused by: org.apache.cxf.interceptor.Fault: Connection reset 
    at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:95) 
    at org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68) 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:466) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299) 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251) 
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124) 
    ... 28 more 
Caused by: com.ctc.wstx.exc.WstxIOException: Connection reset 
    at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:313) 
    at org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:93) 
    ... 35 more 
Caused by: java.net.SocketException: Connection reset 
    at java.net.SocketInputStream.read(SocketInputStream.java:189) 
    at java.net.SocketInputStream.read(SocketInputStream.java:121) 
    at sun.security.ssl.InputRecord.readFully(InputRecord.java:312) 
    at sun.security.ssl.InputRecord.read(InputRecord.java:350) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:861) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1262) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1289) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1273) 
    at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:523) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) 
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1087) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1836) 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1794) 
    at org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:42) 
    at org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69) 
    at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:96) 
    at com.ctc.wstx.sw.BufferingXmlWriter.flush(BufferingXmlWriter.java:214) 
    at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.java:311) 
    ... 36 more 

У вас есть идеи, что могло случиться? Напомню, что это происходит только в одном из многих ноутбуков с одним и тем же кодом и конфигурацией, только в производственной среде (он отлично работает во всех других средах, никогда не возникает проблем) и только время от времени.

Еще одна вещь: если я делаю звонки с использованием SOAPUI с того же ноутбука, исключений нет.

Ваше время и ответ очень ценятся.

спасибо.

EDIT

Кроме того, есть одно сообщение, что все чаще появляются на данном ноутбуке только (в журнале затмения). Я не уверен, что это может быть причиной, хотя:

Mar 14, 2013 12:19:30 PM org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver handleHttpRequestMethodNotSupported 
WARNING: Request method 'HEAD' not supported 
+0

В журнале 'Connection reset'. Вы еще проверили свое соединение? – Raptor

+0

Да, это не из-за интернет-соединения наверняка. – James

+0

Вы пробовали telnet в порт? Окно для просмотра в браузере не означает, что ваше соединение будет успешным. – Raptor

ответ

2

Звучит маловероятно, но это из-за JDK версии. Мы понизили версию JDK с 1,7 до 1,6, и она работала безупречно.

Оказывается, мы ударились нашей головой целого месяца, чтобы потом узнать, что это была версия несовместимость: о

+3

В моем случае это был сервер, который переключился с использования JDK 1.6 на 1.7, а затем клиент начал бросать ошибки. Благодаря вам, постукивая головой в течение месяца, мне нужно было всего шесть часов ударить головой. – eebbesen

+0

честно целый месяц? –

0

на основе информации, предоставленной ошибка корень:

Запрос метод «голова» не поддерживается

вас может сообщить вашему контроллеру о поддержке метода HEAD с использованием setSupportedMethods(String[] supportedMethodsArray).

Ссылка: http://forum.springsource.org/showthread.php?11794-Request-method-HEAD-not-supported-how-to-avoid-this-error

+0

На самом деле наше приложение нигде не делает запрос HEAD явно. Интересно, откуда это взялось. Дело в том, что это не отображается в других ноутбуках с тем же кодом и базой данных. – James

+0

Определение поддержки HEAD на стороне сервера также не является вариантом, потому что мы разрабатываем только клиентское приложение. – James