HikariCP
HikariCP copied to clipboard
How to connect Db2 on IBM iSeries/AS400?
Enviroment:
HikariCP version: 3.4.5
JDK version : 1.8
Database : Db2 on IBM iSeries/AS400
Driver:
<dependency>
<groupId>net.sf.jt400</groupId>
<artifactId>jt400</artifactId>
<version>10.6</version>
</dependency>
Problem
This is my code to connect:
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:as400://serverIP:serverPort;user=xxx;password=xxx;");
config.setMaximumPoolSize(16);
config.setMinimumIdle(1);
config.setIdleTimeout(600000);
HikariDataSource dataSource = new HikariDataSource(config);
Connection connection = dataSource.getConnection();
When I use HikariCP to connect to Db2 on IBM iSeries/AS400, there will throw the following exception.
Is there something wrong with my usage or something else?
2021-09-08 00:55:54.738 [ERROR] com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:593) - HikariPool-1 - Exception during pool initialization.
java.sql.SQLException: The application requester cannot establish the connection. (Connection was dropped unexpectedly.)
at com.ibm.as400.access.JDError.createSQLExceptionSubClass(JDError.java:887) ~[gcef-datasource-service.jar:?]
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:610) ~[gcef-datasource-service.jar:?]
at com.ibm.as400.access.JDError.throwSQLException(JDError.java:568) ~[gcef-datasource-service.jar:?]
at com.ibm.as400.access.AS400JDBCConnectionImpl.setProperties(AS400JDBCConnectionImpl.java:3523) ~[gcef-datasource-service.jar:?]
at com.ibm.as400.access.AS400JDBCDriver.prepareConnection(AS400JDBCDriver.java:1434) ~[gcef-datasource-service.jar:?]
at com.ibm.as400.access.AS400JDBCDriver.initializeConnection(AS400JDBCDriver.java:1280) ~[gcef-datasource-service.jar:?]
at com.ibm.as400.access.AS400JDBCDriver.connect(AS400JDBCDriver.java:403) ~[gcef-datasource-service.jar:?]
at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:121) ~[gcef-datasource-service.jar:?]
at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358) ~[gcef-datasource-service.jar:?]
at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206) ~[gcef-datasource-service.jar:?]
at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477) ~[gcef-datasource-service.jar:?]
at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560) ~[gcef-datasource-service.jar:?]
at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[gcef-datasource-service.jar:?]
at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81) ~[gcef-datasource-service.jar:?]
at com.gcef.data.common.connection.ConnectionFactory.addDataSource(ConnectionFactory.java:43) ~[gcef-datasource-service.jar:?]
at com.gcef.data.common.connection.ConnectionFactory.getConnection(ConnectionFactory.java:24) ~[gcef-datasource-service.jar:?]
at com.gcef.data.service.DataSourceService.testConnection(DataSourceService.java:43) ~[gcef-datasource-service.jar:?]
at com.gcef.data.controller.DataSourceController.lambda$static$11(DataSourceController.java:128) ~[gcef-datasource-service.jar:?]
at com.gcef.data.controller.authorization.BasicAuthAccessManager.manage(BasicAuthAccessManager.java:20) ~[gcef-datasource-service.jar:?]
at io.javalin.http.JavalinServlet$addHandler$protectedHandler$1.handle(JavalinServlet.kt:121) ~[gcef-datasource-service.jar:?]
at io.javalin.http.JavalinServlet$service$2$1.invoke(JavalinServlet.kt:45) ~[gcef-datasource-service.jar:?]
at io.javalin.http.JavalinServlet$service$2$1.invoke(JavalinServlet.kt:24) ~[gcef-datasource-service.jar:?]
at io.javalin.http.JavalinServlet$service$1.invoke(JavalinServlet.kt:129) ~[gcef-datasource-service.jar:?]
at io.javalin.http.JavalinServlet$service$2.invoke(JavalinServlet.kt:40) ~[gcef-datasource-service.jar:?]
at io.javalin.http.JavalinServlet.service(JavalinServlet.kt:81) ~[gcef-datasource-service.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[gcef-datasource-service.jar:?]
at io.javalin.websocket.JavalinWsServlet.service(JavalinWsServlet.kt:51) ~[gcef-datasource-service.jar:?]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:763) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:569) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) ~[gcef-datasource-service.jar:?]
at io.javalin.core.JavalinServer$start$wsAndHttpHandler$1.doHandle(JavalinServer.kt:49) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:507) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1292) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:173) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.Server.handle(Server.java:501) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:556) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:135) ~[gcef-datasource-service.jar:?]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806) [gcef-datasource-service.jar:?]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938) [gcef-datasource-service.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_202]
Caused by: com.ibm.as400.access.ConnectionDroppedException: Connection was dropped unexpectedly.
at com.ibm.as400.access.DataStream.readAfterHeader(DataStream.java:259) ~[gcef-datasource-service.jar:?]
at com.ibm.as400.access.AS400XChgRandSeedReplyDS.read(AS400XChgRandSeedReplyDS.java:63) ~[gcef-datasource-service.jar:?]
at com.ibm.as400.access.AS400ImplRemote.getConnection(AS400ImplRemote.java:1418) ~[gcef-datasource-service.jar:?]
at com.ibm.as400.access.AS400ImplRemote.connect(AS400ImplRemote.java:499) ~[gcef-datasource-service.jar:?]
at com.ibm.as400.access.AS400.connectService(AS400.java:1416) ~[gcef-datasource-service.jar:?]
at com.ibm.as400.access.AS400JDBCConnectionImpl.setProperties(AS400JDBCConnectionImpl.java:3510) ~[gcef-datasource-service.jar:?]
... 53 more
I'd suggest adding: prompt=false
to your url
Perhaps your connection is being dropped on the server side. If there is any connection control on the IBM i side (AS/400). Talk to your IBM i (DB2 for i) administrator to see if this control exists. For example: We have implemented security validations in our environment that prevent connections from invalid IPs, which result in this same message "Connection was dropped unexpectedly".