문제점
-
- BEGIN NESTED EXCEPTION **
javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer's close_notify
STACKTRACE:
javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify at java.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:847) at java.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:825) at com.mysql.cj.protocol.a.NativeProtocol.quit(NativeProtocol.java:1319) at com.mysql.cj.NativeSession.quit(NativeSession.java:182) at com.mysql.cj.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:1750) at com.mysql.cj.jdbc.ConnectionImpl.close(ConnectionImpl.java:720) at Resource.DBUtils_mysql.close_db(DBUtils_mysql.java:64) at Resource.ResMain.go(ResMain.java:73) at Resource.ResMain.main(ResMain.java:599)
-
- END NESTED EXCEPTION **
이유:
이 예외는 Java에서 SSL/TLS 연결을 닫는 동안 발생할 수 있는 일반적인 문제로, 클라이언트가 서버로부터 close_notify 메시지를 받기 전에 연결을 닫으려고 할 때 발생합니다. 이 문제는 MySQL 데이터베이스와의 SSL 연결을 닫을 때 자주 나타날 수 있습니다.
해결법 정의
- MySQL Connector/J 설정 변경: MySQL Connector/J의 설정을 변경하여 useSSL 및 requireSSL 옵션을 사용하지 않도록 설정하거나, SSL 연결을 적절히 처리하도록 설정을 조정합니다.
- MySQL 서버 설정 확인: MySQL 서버의 SSL 설정을 확인하고, 필요하다면 SSL 설정을 조정합니다.
- Java 코드에서 명시적으로 close_notify 보내기: Java 코드에서 명시적으로 close_notify 메시지를 보내도록 수정합니다.
해결법
String url_mysql = "jdbc:mysql://localhost:3306/your_database?useSSL=false&requireSSL=false";
예시
String url_mysql = "jdbc:mysql://localhost:3306/your_database?useSSL=false&requireSSL=false";