java.net의 원인Socket Exception:연결을 재설정하시겠습니까?
볼 수 있다.java.net.SocketException: Connection reset
에러가 기록되고 있습니다. 알 수 .Connection reset
에러는 실제로 발생하고 있습니다.또, 디버깅의 방법을 나타냅니다.
이 문제는 보내려는 메시지와는 관련이 없는 것으로 보입니다.메시지는 다음과 같습니다. connection reset by peer
.
이 예외의 일반적인 원인과 대처 방법에 대해 제안해 주실 수 있습니까?
스택트레이스(</FONT CHANGE: >)를 나타냅니다.FONT CHANGE:>)를 나타냅니다.com.companyname.mtix.sms
을 사용하다)
java.net 를 참조해 주세요.Socket Exception:접속 리셋java.net 에 접속해 주세요.SocketInputStream.read(SocketInputStream).자바:168)java.io 에 접속해 주세요.BufferedInputStream.fill(BufferedInputStream).자바:218)java.io 에 접속해 주세요.BufferedInputStream.read(BufferedInputStream).자바:235) org.syslog.syslogclient로 이동합니다.HttpParser.readRawLine(HttpParser.java:77)org.syslog.syslogclient로 이동합니다.HttpParser.readLine(HttpParser.java:105)org.syslog.syslogclient로 이동합니다.HttpConnection.readLine(HttpConnection.java:1115)org.syslog.syslogclient로 이동합니다.HttpMethodBase.readStatusLine(HttpMethodBase.java:1832)org.syslog.syslogclient로 이동합니다.HttpMethodBase.readResponse(HttpMethodBase.java:1590)org.syslog.syslogclient로 이동합니다.Http Method Base 。execute(HttpMethodBase.java:995)org.syslog.syslogclient로 이동합니다.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:397)org.syslog.syslogclient로 이동합니다.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)org.syslog.syslogclient로 이동합니다.HttpClient.executeMethod(HttpClient.java:396)org.syslog.syslogclient로 이동합니다.HttpClient.executeMethod(HttpClient.java:324)com.companyname.mtix.services.services.services.message로 이동합니다.SendTextMessage.sendTextMessage(SendTextMessage).Java: 개요)com.companyname.mtix.services로 이동합니다.MessageServiceImpl.sendTextMessage(MessageServiceImpl.java:125)com.companyname.mtix.services.remote로 이동합니다.MessageServiceRemoteImpl.sendTextMessage(MessageServiceRemoteImpl.java:43)햇빛을 반사하다GeneratedMethodAccessor203.invoke(알 수 없는 소스)햇빛을 반사하다Method Accessor Impl을 위임하고 있습니다.호출(Delegating Method Accessor Impl.java:25)java.displect.reflect에 있습니다.Method.invoke(Method.java:585)org.disc.axis.disc.disc.disc.RPProvider.invokeMethod(RPCProvider.java:397)org.disc.axis.disc.disc.disc.RPCProvider.processMessage(RPCProvider.java:186)org.disc.axis.disc.disc.disc.Java Provider.호출(JavaProvider.java:323)org.darg.axis. strategy에 있습니다.InvocationStrategy.visit(InvocationStrategy).자바: 32)org.disc.axis 에 있습니다.SimpleChain.doVisiting(SimpleChain.java:118)org.disc.axis 에 있습니다.SimpleChain.invoke(SimpleChain.java:83)org.disc.axis.disc.disc.disc.SOAPService(SOAPService 。호출(SOAPService)자바:453)org.dis.axis.server로 이동합니다.AxisServer.invoke(AxisServer.java:281)org.disc.axis.disc.disc.disc.Axis Servlet.doPost(Axis Servlet.java:699) javax.servlet.disples로 이동합니다.HttpServlet.service(HttpServlet.java:709)org.disc.axis.disc.disc.disc.Axis Servlet Base 。service(Axis Servlet Base).Java:327)javax.servlet.disples로 이동합니다.HttpServlet.service(HttpServlet.java:802)org.dev.inna.core에 있습니다.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) org.dev.inna.core에 있습니다.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)를 참조해 주세요.NoCacheFilter.doFilter(NoCacheFilter.java:63)org.dev.inna.core에 있습니다.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)org.dev.inna.core에 있습니다.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)를 참조해 주세요.MessageFilter.doFilter(MessageFilter.java:53)org.dev.inna.core에 있습니다.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)org.dev.inna.core에 있습니다.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)org.springframework.web.filter에 있습니다.Request Context Filter.do Filter내부(Request Context Filter.java:61)org.springframework.web.filter에 있습니다.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)org.dev.inna.core에 있습니다.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)org.dev.inna.core에 있습니다.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)org.http.nowledgewhere에서 확인할 수 있습니다.AAFilter.doFilter(AAFilter.java:46)org.dev.inna.core에 있습니다.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)org.dev.inna.core에 있습니다.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)org.dev.inna.core에 있습니다.StandardWrapperValve.invoke(StandardWrapperValve.java:213) org.dev.inna.core에 있습니다.Standard Context Valve.invoke(Standard Context Valve.java:178)org.dev.inna.core에 있습니다.표준.HostValve.invoke(표준)HostValve.java:126)org.g.g.g.g.g.g.g.g.gErrorReportValve.invoke(ErrorReportValve.java:105)org.g.g.g.g.g.g.g.g.gAccessLogValve.invoke(AccessLogValve.java:541)org.dev.inna.core에 있습니다.Standard Engine Valve.invoke(Standard Engine Valve.java:107)org.g.g.g.g.g.g.g.g.g코요테 어댑터서비스(CoyoteAdapter.java:148)org.disc.siscote에 있습니다.http11.Http11Processor.process(Http11Processor.java:869)org.disc.siscote에 있습니다.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol).자바:664) org.apache.tomcat.util.net 에 접속해 주세요.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)org.apache.tomcat.util.net 에 접속해 주세요.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)org.g.g.g.g.g.g.g.g.g.gThreadPool$ControlRunnable.run(ThreadPool.java:684)를 참조해 주세요.Thread.run(Thread.java:595)
당사의 컴포넌트는 Tomcat에서 실행되는 웹 어플리케이션으로, SMS 메시지를 보내는 서드파티 웹 서비스를 호출합니다.예외가 발생하는 코드의 행은 아래 코드 스니펫의 마지막 행입니다.
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 등의 도구를 사용하여 실제 네트워크 패킷을 표시할 수 있습니다.또한 웹 서비스 테스트에 사용할 수 있는 Java 코드 대체 클라이언트가 있습니까?이것이 성공하면 Java 코드의 버그를 나타낼 수 있습니다.
Commons HTTP Client를 사용하는 경우 Common HTTP Client Logging Guide를 참조하십시오.HTTP 수준에서 요청을 기록하는 방법에 대해 설명합니다.
이 에러는, 다른 쪽이 아니고, 유저측에서 발생합니다.상대방이 접속을 리셋 했을 경우는, 예외 메세지에 다음과 같이 표시됩니다.
java.net.SocketException reset by peer
은 '내부 입니다.HttpClient
연결을 되지 않습니다.SSL의 오래된 연결을 확인해도 이 오류가 수정되지 않습니다.해결책: 클라이언트를 덤프하고 다시 만듭니다.
Glassfish3 서버에 배치된 웹 서비스에 액세스하려고 하면 http-thread-pool 설정을 조정할 수 있습니다.다수의 동시 스레드가 웹 서비스를 호출할 때 Socket Exceptions를 수정했습니다.
- 관리 콘솔로 이동
- [ Configurations ]-> [ Server config ]-> [ Thread Pool ]-> [ http - thread - pool ]으로 이동합니다.
- "최대 스레드 풀 크기" 설정을 5에서 32로 변경합니다.
- "최소 스레드 풀 크기" 설정을 2에서 16으로 변경합니다.
- Glassfish를 재시작합니다.
저도 우연히 이 오류를 발견했어요.제 경우는 TLS1.0을 지원하는 JRE6를 사용하고 있었습니다.서버는 TLS1.2만을 지원하므로 이 오류가 발생하였습니다.
은 Tomcat이 한 Tomcat으로 되어 있기 입니다.maxHttpHeaderSize
SOLR을 사용하다
이게 도움이 됐으면 좋겠네요!
이 오류는 소켓을 통해 응답이 반환되기 전에 클라이언트가 소켓 연결을 닫았을 때 서버 측에서 발생합니다.웹 앱 시나리오에서는 수동으로 만들 수 있기 때문에 이 모든 것이 위험한 것은 아닙니다.예를 들어 응답이 검색되기 전에 브라우저를 종료합니다.
이 오류는 항상 발생하며 정상이라고 생각합니다.
한쪽이 이미 전화를 끊었을 때 읽으려고 할 때 발생합니다.따라서 프로토콜에 따라 문제가 지정되거나 지정되지 않을 수 있습니다.클라이언트 코드가, 서버에 행업 하는 것을 명확하게 나타내고 있는 경우, 클라이언트와 서버가 동시에 행업 할 수 있어 이 메세지는 발생하지 않습니다.
제가 코드를 구현하는 방법은 고객이 작별 인사 없이 전화를 끊는 것입니다.그러면 서버는 오류를 검출하여 무시할 수 있습니다.HTTP의 경우 프로토콜의 한 수준은 연결당 하나 이상의 요청을 허용하는 반면 다른 수준은 허용하지 않는다고 생각합니다.
따라서 한쪽이 다른 한쪽에서 전화를 계속 끊을 가능성이 있다는 것을 알 수 있습니다.당신이 받고 있는 오류는 불법적인 문제가 아닐 수 있으며, 단순히 로그 파일을 채우지 않기 위해 그것을 포착할 수 있습니다.
예외는 소켓이 반대쪽에서 갑자기 닫혔음을 의미합니다.웹 서비스를 호출하고 있기 때문에 이 문제는 발생하지 않습니다.대부분 웹 서비스에서 버그를 트리거하는 요청을 보내고 있습니다.
이러한 경우 요청 전체를 기록하여 이상 징후가 있는지 확인하십시오.그렇지 않은 경우 웹 서비스 공급자에게 연락하여 기록된 문제 요청을 보내십시오.
이 실이 좀 오래된 건 알지만, 제 2센트를 더하고 싶습니다.릴리스 직후에 같은 「접속 리셋」에러가 발생했습니다.
의 '우리'가 ' '우리'의 '우리'가apache
서버가 도입용으로 다운되었습니다.합니다.apache
접속이 다운되어 리셋 에러가 발생하고 있었습니다.
은 입니다만, ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★.java.net.SocketException: Connection reset
★★★★★★★★★★★★★★★★★★,
서버 측 응용 프로그램의 슬롯링 설정이 한 번에 하나의 연결만 허용하도록 변경되었습니다.따라서 콜이 통과하거나 통과되지 않을 수 있습니다.슬롯링 설정을 변경하여 문제를 해결했습니다.
읽으려고 했던 텍스트 파일에 방화벽의 안티바이러스 서명과 일치하는 문자열이 포함되어 있을 때 이 오류가 발생했습니다.
FWIW, 이 에러는, POST 요구를 상정하고 있는 엔드 포인트에 GET 요구를 잘못했을 때에 발생하고 있었습니다.아마도 그것은 문제를 처리하는 특정 서버 방식이었을 것입니다.
나도 그 에러가 발생하고 있었다.Connection reset by peer
예외는 Spring의 REST 템플릿에 의해 발생합니다.postForObject()
방법.저에게 문제는 너무 긴HTTP URL 요구였습니다.따라서 먼저 생성된 URL이 적절한지 여부를 확인하고 서버가 해당 길이의 요청을 처리할 수 있어야 하는 경우 서버 설정으로 이동하여 URL 요청의 기본 허용 길이를 높입니다.
이것으로 문제는 해결되었지만, 일부 인터넷 브라우저, 특히 오래된 브라우저에서는 응용 프로그램이 실행되지 않을 수 있습니다.이는 URL 요청의 최대 길이가 고정되어 있기 때문입니다.
도움이 됐으면 좋겠는데...
접속하려고 했던 포트가 닫혀 있었기 때문에 이 에러가 발생하고 있습니다.
언급URL : https://stackoverflow.com/questions/585599/whats-causing-my-java-net-socketexception-connection-reset
'programing' 카테고리의 다른 글
Java 문자열에서 선행 및 후행 공백 제거 (0) | 2022.12.21 |
---|---|
InterfaceError(0, ') (0) | 2022.12.21 |
C에서 메모리 주소를 인쇄하는 방법 (0) | 2022.12.21 |
node.js에서 한 줄씩 파일을 읽으시겠습니까? (0) | 2022.12.21 |
Http Security, Web Security 및 Authentication Manager Builder (0) | 2022.12.21 |