강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

민돌멩이님의 프로필 이미지
민돌멩이

작성한 질문수

Connection is broken: "java.net.SocketTimeoutException: connect timed out: localhost" 오류

작성

·

1.1K

·

수정됨

0

처음 jpa 프로젝트 생성을 따라하던 중 h2 server 에서 embedded로 서버를 돌리면 잘 넘어가는데 server로 돌리면 해당 오류가 뜹니다.

Intellij 에서도

12월 03, 2023 2:02:51 오후 org.hibernate.jpa.internal.util.LogHelper logPersistenceUnitInformation
INFO: HHH000204: Processing PersistenceUnitInfo [name: hello]
12월 03, 2023 2:02:51 오후 org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.4.1.Final}
12월 03, 2023 2:02:52 오후 org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
12월 03, 2023 2:02:52 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
12월 03, 2023 2:02:52 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [org.h2.Driver] at URL [jdbc:h2:tcp://localhost/~/test]
12월 03, 2023 2:02:52 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=sa}
12월 03, 2023 2:02:52 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
12월 03, 2023 2:02:52 오후 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
12월 03, 2023 2:02:55 오후 org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator initiateService
WARN: HHH000342: Could not obtain connection to query metadata : null
12월 03, 2023 2:02:55 오후 org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
12월 03, 2023 2:02:55 오후 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 90067, SQLState: 90067
12월 03, 2023 2:02:55 오후 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Connection is broken: "java.net.SocketTimeoutException: connect timed out: localhost" [90067-224]
Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
	at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.injectServices(DefaultIdentifierGeneratorFactory.java:152)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.injectDependencies(AbstractServiceRegistryImpl.java:286)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:243)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
	at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:175)
	at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:118)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:903)
	at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:934)
	at org.hibernate.jpa.HibernatePersistenceProvider.createEntityManagerFactory(HibernatePersistenceProvider.java:56)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:79)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
	at hellojpa.JpaMain.main(JpaMain.java:10)
Caused by: org.hibernate.exception.JDBCConnectionException: Error calling Driver#connect
	at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:48)
	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
	at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.convertSqlException(BasicConnectionCreator.java:118)
	at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:41)
	at org.hibernate.engine.jdbc.connections.internal.BasicConnectionCreator.createConnection(BasicConnectionCreator.java:58)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.addConnections(DriverManagerConnectionProviderImpl.java:321)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.<init>(DriverManagerConnectionProviderImpl.java:240)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections.<init>(DriverManagerConnectionProviderImpl.java:218)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections$Builder.build(DriverManagerConnectionProviderImpl.java:359)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:98)
	at org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:73)
	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:107)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:246)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145)
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)
	at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
	at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:101)
	at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
	... 14 more
Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.SocketTimeoutException: connect timed out: localhost" [90067-224]
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:690)
	at org.h2.message.DbException.getJdbcSQLException(DbException.java:489)
	at org.h2.message.DbException.get(DbException.java:212)
	at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:442)
	at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:330)
	at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:125)
	at org.h2.Driver.connect(Driver.java:59)
	at org.hibernate.engine.jdbc.connections.internal.DriverConnectionCreator.makeConnection(DriverConnectionCreator.java:38)
	... 29 more
Caused by: java.net.SocketTimeoutException: connect timed out
	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.h2.util.NetUtils.createSocket(NetUtils.java:135)
	at org.h2.util.NetUtils.createSocket(NetUtils.java:99)
	at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:130)
	at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:438)
	... 33 more

Process finished with exit code 1

와 같이 connection 오류가 뜨는데 혹시 해결방법이 있을까요?

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

민돌멩이님, H2 데이터베이스 서버 모드로 전환할 때 발생하는 연결 오류 관련 문제를 해결하는 데 도움을 드리겠습니다.

먼저, 스크린샷에 나와 있는 JDBC URL 값이 잘못 입력되었을 가능성을 확인해야 합니다. 스크린샷에서 “jdbc:h2:tcp://localhost/-/test”로 나와 있는데, “-/test” 대신 “/test”를 사용해야 올바른 URL 형식입니다. 즉, 정확한 JDBC URL은 “jdbc:h2:tcp://localhost/~/test” 여야 합니다.

다음으로, 포트 번호가 생략된 것을 확인해야 합니다. 기본적으로 H2 데이터베이스는 포트 9092에서 서비스를 제공합니다. 포트가 변경되지 않았다면, URL은 “jdbc:h2:tcp://localhost:9092/~/test”로 수정해야 합니다.

그리고 H2 서버가 정상적으로 실행되고 있는지 확인해야 합니다. 서버 모드에서 H2 데이터베이스는 별도의 서버 프로세스가 실행되어야 합니다. 이 서버 프로세스가 아직 실행 중이 아니라면 클라이언트에서는 연결할 수 없으므로, H2 데이터베이스 서버가 실행되고 있는지 확인해주세요.

H2 데이터베이스의 설정이나 실행 방법에 대한 자세한 정보는 아래 링크에서 찾아볼 수 있습니다:
- H2 Database 공식 웹사이트: https://www.h2database.com

프로젝트 설정 파일 (예: application.properties 또는 application.yml)에서 H2 데이터베이스와의 연결 설정이 올바르게 구성되었는지 확인해야 합니다. 스프링 부트 환경에서 H2를 사용할 때는 별도의 연결 URL을 구성하지 않아도 자동으로 임베디드 모드로 설정되지만, 서버 모드를 사용하려면 명시적으로 연결 설정을 해줘야 합니다.

H2 데이터베이스 관련 스프링 부트 설정에 대한 정보는 아래 링크를 참고해주세요:
- 스프링 부트 레퍼런스 가이드 - Embedded Database Support: Spring Boot Reference Documentation - Embedded Database Support
- 스프링 부트 레퍼런스 가이드 - Using H2’s Web Console: Spring Boot Reference Documentation - H2 Web Console

연결 문제가 방화벽이나 네트워크 설정에 의해 발생할 수도 있습니다. 로컬 환경에서 연결이 제한되고 있지 않은지 확인하고, 필요하다면 방화벽에서 H2 데이터베이스의 포트를 열어주거나 해당 설정을 검토해볼 필요가 있습니다.

이 조치들을 취한 후에도 연결 오류가 지속되면, 보다 정확한 진단을 위해 로컬 시스템의 로그, H2 서버 상태, 네트워크 설정 등을 추가로 검토할 필요가 있습니다.

도움이 필요하시면 언제든 추가 질문을 해주시길 바랍니다.

민돌멩이님의 프로필 이미지
민돌멩이
질문자

-/test가 아니라 ~/test로 작성되어 있습니다..! 해당 문제로 구글링 해보고 찾아봤는데 문제가 해결되지 않아서 질문 남긴 것입니다 ㅠㅠ

민돌멩이님의 프로필 이미지
민돌멩이

작성한 질문수

질문하기