programing

Spring Boot MongoDB 연결 문제

iphone6s 2023. 8. 5. 09:59
반응형

Spring Boot MongoDB 연결 문제

내 Spring Boot 응용 프로그램이 MongoDB 데이터베이스에 연결하려고 합니다.구성이 application.yml 파일에 추가됩니다.애플리케이션은 어제까지 현지에서 완전히 정상적으로 작동했습니다.

그러나 오늘 localhost에서 로컬로 실행할 때 다음 오류가 발생합니다.

2020-12-03 14:59:03.763[0;39m [32m INFO[0;39m [35m10692[0;39m [2m---[0;39m [2m[ngodb.net:27017][0;39m [36morg.mongodb.driver.cluster              [0;39m [2m:[0;39m Exception in monitor thread while connecting to server edugyanamcluster-shard-00-00.l4au7.mongodb.net:27017

com.mongodb.MongoSocketWriteException: Exception sending message
    at com.mongodb.internal.connection.InternalStreamConnection.translateWriteException(InternalStreamConnection.java:551) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.sendMessage(InternalStreamConnection.java:433) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.sendCommandMessage(InternalStreamConnection.java:273) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:257) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:105) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:62) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:129) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:117) ~[mongodb-driver-core-3.11.2.jar:na]
    at java.base/java.lang.Thread.run(Thread.java:835) ~[na:na]
Caused by: javax.net.ssl.SSLHandshakeException: extension (5) should not be presented in certificate_request
    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[na:na]
    at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117) ~[na:na]
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:307) ~[na:na]
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:263) ~[na:na]
    at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:254) ~[na:na]
    at java.base/sun.security.ssl.SSLExtensions.<init>(SSLExtensions.java:90) ~[na:na]
    at java.base/sun.security.ssl.CertificateRequest$T13CertificateRequestMessage.<init>(CertificateRequest.java:818) ~[na:na]
    at java.base/sun.security.ssl.CertificateRequest$T13CertificateRequestConsumer.consume(CertificateRequest.java:922) ~[na:na]
    at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392) ~[na:na]
    at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:443) ~[na:na]
    at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:421) ~[na:na]
    at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:177) ~[na:na]
    at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164) ~[na:na]
    at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1180) ~[na:na]
    at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1091) ~[na:na]
    at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:402) ~[na:na]
    at java.base/sun.security.ssl.SSLSocketImpl.ensureNegotiated(SSLSocketImpl.java:721) ~[na:na]
    at java.base/sun.security.ssl.SSLSocketImpl$AppOutputStream.write(SSLSocketImpl.java:998) ~[na:na]
    at com.mongodb.internal.connection.SocketStream.write(SocketStream.java:99) ~[mongodb-driver-core-3.11.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.sendMessage(InternalStreamConnection.java:430) ~[mongodb-driver-core-3.11.2.jar:na]
    ... 9 common frames omitted

[2m2020-12-03 14:59:05.112[0;39m [33m WARN[0;39m [35m10692[0;39m [2m---[0;39m [2m[  restartedMain][0;39m [36mJpaBaseConfiguration$JpaWebConfiguration[0;39m [2m:[0;39m spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
[2m2020-12-03 14:59:07.468[0;39m [32m INFO[0;39m [35m10692[0;39m [2m---[0;39m [2m[  restartedMain][0;39m [36mpertySourcedRequestMappingHandlerMapping[0;39m [2m:[0;39m Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2ControllerWebMvc#getDocumentation(String, HttpServletRequest)]
[2m2020-12-03 14:59:07.822[0;39m [32m INFO[0;39m [35m10692[0;39m [2m---[0;39m [2m[  restartedMain][0;39m [36m.s.s.UserDetailsServiceAutoConfiguration[0;39m [2m:[0;39m

무엇에 관한 문제인지 조언이 필요합니까?몇 시간 전에 코드가 완전히 정상적으로 작동했기 때문입니다.

MongoDB는 실제로 서버를 업데이트했습니다. 암호를 업데이트했을 수도 있습니다.솔루션은 실제로 JVM 매개 변수에서 TLS 버전을 1.2로 변경하는 것입니다.

Eclipse(IDE로 사용하는 경우) -> Project -> Run As -> Run Configurations -> Arguments -> VM Arguments, add ->

-Djdk.tls.client.protocols=TLSv1.2

저는 이 다른 질문의 해결책을 사용하여 이 문제를 해결할 수 있었습니다.JVM 매개 변수에서 TLS 버전을 1.2로 변경했습니다.

-Djdk.tls.client.protocols=TLSv1.2

TLSV1.2로 다운그레이드하는 것 외에 JDK를 업그레이드하면 이 문제가 해결됩니다.

JDK 버전 11.0.0 - 11.0.6의 경우 JDK를 패치가 적용된 버전으로 업그레이드합니다.JDK-8236039

JDK 버전 13.0.0 - 13.0.02, 13.0.03으로 업그레이드하면 이 문제가 해결됩니다. JDK-82415

저는 문자 그대로 jdk 업그레이드와 최고의 솔루션을 제외한 모든 것을 시도해 보았는데, 작동 중인 솔루션은 TLS 버전을 변경하는 것입니다.

IDE Run As -> Run Configurations...에서 프로젝트를 마우스 오른쪽 버튼으로 클릭합니다.인수 탭으로 이동하고 VM 인수에 -Djdk.tls.client.protocols=를 추가합니다.TLSv1.2

지금 응용 프로그램을 실행하면 잘 작동할 것입니다.

더 명확하게 하기 위해 첨부된 이미지를 참조할 수 있습니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력

JDK 11.0.7에서 11.0.10으로 업데이트했는데 이제 작동합니다.

이 문제가 발생하여 먼저 JVM에 이 매개 변수를 추가하여 해결했습니다.

-Djdk.tls.client.protocols=TLSv1.2

하지만 나중에 openjdk:12 도커 이미지를 최신 openjdk:11(LTS)로 변경했더니 더 이상 -D 파라미터 없이 문제가 해결되었습니다 =)

저도 같은 문제가 있었습니다. https://bugs.openjdk.java.net/browse/JDK-8236039 에서 JDK를 JDK-15 zulu: https://www.azul.com/downloads/zulu-community/ ?version=http-15-mts로 변경하면 이전에 Open JDK 버전을 사용하던 문제가 해결되었습니다.

언급URL : https://stackoverflow.com/questions/65125510/spring-boot-mongodb-connectivity-issue

반응형