서버를 시작한 다음 특정 IP 및 포트에서 처음부터 응용 프로그램을 시작했습니다 (딥 서버 또는 포트가 이미 사용되지 않음). 새 스레드를 만들 수 없다는 java-lang-OutOfMemory 오류로 인해 응용 프로그램이 충돌했습니다. JVM 4G 메모리를 할당했으며 오류가 발생하지 않았습니다. 그러나 이제 클라이언트를 시작하면 다시 충돌합니다. 약 10-15 초 동안 실행되고 SocketTimeoutException과 충돌합니다. 여기에 추적H2 데이터베이스 (서버) TCP 연결 시간 초과 및 연결 풀링
org.h2.jdbc.JdbcSQLException: Connection is broken: "java.net.SocketTimeoutException: connect timed out: MYIPADDRESS" [90067-172]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:158)
at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:407)
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:295)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:105)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:90)
at org.h2.Driver.connect(Driver.java:73)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at com.org.tseries.simulator.IPEmailSeriesTestDriver.shootH2(IPEmailSeriesTestDriver.java:201)
at com.org.tseries.simulator.IPEmailSeriesTestDriver.processSimulator(IPEmailSeriesTestDriver.java:160)
at com.org.tseries.simulator.IPEmailSeriesTestDriver.main(IPEmailSeriesTestDriver.java:98)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.net.SocketTimeoutException: connect timed out
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391)
at java.net.Socket.connect(Socket.java:579)
at org.h2.util.NetUtils.createSocket(NetUtils.java:119)
at org.h2.util.NetUtils.createSocket(NetUtils.java:100)
at org.h2.engine.SessionRemote.initTransfer(SessionRemote.java:95)
at org.h2.engine.SessionRemote.connectServer(SessionRemote.java:403)
... 14 more
내가 터미널에서 클라이언트를 실행할 때 그것은 충돌입니다하지만 난 STS (기반 IDE를 일식)에서 같은 클라이언트를 실행할 때, 그것은 추락 didnt한다. 클라이언트를 실행하는 동안 추가해야하는 설정이나 플래그는 무엇입니까?
업데이트 : 연결 문자열에 AUTORECONNECT = TRUE를 추가하여 해결되었습니다. 자세한 내용은 여기, h2database.com/html/features.html#auto_reconnect
하지만 지금은 다른 TCP 클라이언트가 연결할 수 있도록 서버 끝에서 연결 풀을 만드는 데 관심이 있습니다. 서버는 다시 연결하는 클라이언트가 아닌 연결 풀에서 클라이언트를 서비스해야합니다. 어떻게 성취 될 수 있습니까?