java.net.SocketException: Connection reset
ログに頻繁であるが断続的なエラーが見られます。Connection reset
エラーが実際にどこから発生しているのか、どのようにデバッグを行うのかは不明です。
この問題は、送信しようとしているメッセージとは無関係であるようです。メッセージはそうで はないことに注意してくださいconnection reset by peer
。
この例外の典型的な原因は何か、どのように進めるかについての提案はありますか?
代表的なスタックトレースcom.companyname.mtix.sms
は次のとおりです(私たちのコンポーネントです):
java.net.SocketException:接続 がjava.net.SocketInputStream.read(SocketInputStream.java:168) でjava.io.BufferedInputStream.fill(BufferedInputStream.java:218) でjava.io.BufferedInputStream.read(BufferedInputStream.javaでリセットされました:235) org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77) at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105) at org.apache.commons.httpclient。 HttpConnection.readLine(HttpConnection.java:1115) at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832) at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590) org.apache.commons.httpclient.Httpclient.Httpcute.DirectClient.executeWithRetry(HttpMethodDirector.java:397) at org.apache.commons.httpclient.HttpMethodDirector.executeMethodでorg.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995) に(HttpMethodDirector.java:170)at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324) at com.companyname mtix.sms.services.impl.message.SendTextMessage.sendTextMessage(SendTextMessage.java:127) at com.companyname.mtix.sms.services.MessageServiceImpl.sendTextMessage(MessageServiceImpl.java:125) com.companyname.mtix.sms.services.remote.MessageServiceRemoteImpl.sendTextMessage(MessageServiceRemoteImpl.java:43) at sun.reflect.GeneratedMethodAccessor203.invoke(Unknown Source)で at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method .java:585) (org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397) at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)( org。) apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323) 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.handlers.soap.SOAPService.invoke(SOAPService.java: 453) org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)で org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) at javax.servlet.http.HttpServlet.service(HttpServletに.java:709) org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.catalina。 core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)( org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.companyname.mtix.sms.http.filters.NoCacheFilter.doFilter(NoCacheFilter。 java:63) org.apache.catalina.coreでorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)の) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 173) com.companyname.mtix.sms.http.filters.MessageFilter.doFilter(MessageFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core .ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:61) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)at org.ajaxanywhere.AAFilter.doFilter(AAFilter.java:46)のorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173 ) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:213)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: 148) org.apache.catalina.valves.ErrorReportValve.invokeで(ErrorReportValve.java:105) org.apache.catyina.valves.AccessLogValve.invoke(AccessLogValve.java:541) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol $ Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net .PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80) at org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run(ThreadPool .java:684) at java.lang.Thread.run(Thread.java:595)
私たちのコンポーネントは、SMSメッセージを送信するサードパーティのWebサービスを呼び出す、Tomcatで実行されるWebアプリケーションです。例外がスローされるコードの行は、以下のコードスニペットの最後の行です。
String aggregatorResponse = null;
HttpClient httpClient = prepareHttpClient( username, password );
PostMethod postMethod = preparePostMethod( textUrl );
try {
SybaseTextMessageBuilder builder = new SybaseTextMessageBuilder();
URL notifyUrl = buildNotificationUrl( textMessage, codeSetManager );
String smsRequestDocument = builder.buildTextMessage( textMessage, notifyUrl );
LOG.debug( "Sybase MT document created as: \n" + smsRequestDocument );
postMethod.setRequestEntity( new StringRequestEntity( smsRequestDocument ) );
LOG.debug( "commiting SMS to aggregator: " + textMessage.toString() );
int httpStatus = httpClient.executeMethod( postMethod );
SocketExceptionのjavadocには、
TCPエラーなど、基になるプロトコルにエラーがあることを示すためにスローされます
あなたの場合、接続はサーバー側の接続によって閉じられているようです。これは、送信しているリクエストに問題があるか、最後に問題がある可能性があります。
デバッグを支援するために、Wiresharkなどのツールを使用して実際のネットワークパケットを確認することができます。また、Webサービスのテストに使用できるJavaコードの代替クライアントはありますか?これが成功した場合は、Javaコードのバグを示している可能性があります。
Commons HTTP Clientを使用している場合は、Common HTTP Client Logging Guideを参照してください。これにより、HTTPレベルでリクエストを記録する方法がわかります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加