SQLMX/IBM-liberty-datasource: 未找到有效的 jdbc 驱动程序
SQLMX/IBM-liberty-datasource: Valid jdbc driver not found
虽然我在 <liberty_server>/lib folder
中包含了 t4sqlmx-3.3.jar
,但我得到了以下 jdbc driver not found error
。还需要进行哪些更改?
<library id="sqlmx-lib">
<fileset dir="lib" includes="t4sqlmx-3.3.jar"/>
</library>
错误:
Caused by: java.sql.SQLNonTransientException: DSRA4000E: A valid JDBC driver implementation class was not found for the jdbcDriver dataSource[default-0]/jdbcDriver[default-0] using the library sqlmx-lib. []
at com.ibm.ws.jdbc.internal.JDBCDriverService.classNotFound(JDBCDriverService.java:207)
at com.ibm.ws.jdbc.internal.JDBCDriverService.createAnyDataSource(JDBCDriverService.java:368)
at com.ibm.ws.jdbc.DataSourceService.init(DataSourceService.java:592)
at com.ibm.ws.jca.cm.AbstractConnectionFactoryService.run(AbstractConnectionFactoryService.java:460)
at com.ibm.ws.jca.cm.AbstractConnectionFactoryService.run(AbstractConnectionFactoryService.java:457)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.ws.jca.cm.AbstractConnectionFactoryService.initPrivileged(AbstractConnectionFactoryService.java:457)
at com.ibm.ws.jca.cm.AbstractConnectionFactoryService.createResource(AbstractConnectionFactoryService.java:144)
at com.ibm.ws.resource.internal.ResourceFactoryTrackerData.getService(ResourceFactoryTrackerData.java:120)
... 107 more
修复数据源后,一些 sqlmx 特定错误:
[12/05/18 14:39:26:473 EDT] 000003f8 SystemErr R Caused by: java.sql.SQLException: Pool requests blocked for dataSource[default-0]/connectionManager, connection pool is being shut down.
[12/05/18 14:39:26:473 EDT] 000003f8 SystemErr R at com.ibm.ws.rsadapter.AdapterUtil.toSQLException(AdapterUtil.java:822)
[12/05/18 14:39:26:473 EDT] 000003f8 SystemErr R at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:152)
[12/05/18 14:39:26:474 EDT] 000003f8 SystemErr R at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:116)
[12/05/18 14:39:26:474 EDT] 000003f8 SystemErr R at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:92)
[12/05/18 14:39:26:474 EDT] 000003f8 SystemErr R at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
[12/05/18 14:39:26:474 EDT] 000003f8 SystemErr R ... 95 more
[12/05/18 14:39:26:474 EDT] 000003f8 SystemErr R Caused by: javax.resource.spi.ResourceAllocationException: Pool requests blocked for dataSource[default-0]/connectionManager, connection pool is being shut down.
[12/05/18 14:39:26:475 EDT] 000003f8 SystemErr R at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:1275)
[12/05/18 14:39:26:475 EDT] 000003f8 SystemErr R at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:573)
[12/05/18 14:39:26:475 EDT] 000003f8 SystemErr R at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:309)
[12/05/18 14:39:26:475 EDT] 000003f8 SystemErr R at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:143)
[12/05/18 14:39:26:475 EDT] 000003f8 SystemErr R ... 98 more
根据堆栈跟踪,您似乎已在 server.xml 中配置了一个 <dataSource>
元素,但未将其包含在您的问题中。使用您提供的 <library>
配置,您的配置可能如下所示:
<dataSource jndiName="jdbc/myDB" type="javax.sql.XADataSource">
<jdbcDriver libraryRef="sqlmx-lib" javax.sql.XADataSource="com.tandem.t4jdbc.SQLMXDataSource"/>
<properties databaseName="SAMPLEDB" hostName="localhost" port="12345"/>
</dataSource>
有关如何在 Liberty 中配置数据源的更多信息,请参阅:
Configuring relational database connectivity in Liberty
注意: 基于对 SQL/MX JDBC 驱动程序文档的谷歌搜索,我发现他们的 XADataSource 实现 class 名称是 com.tandem.t4jdbc.SQLMXDataSource
。如果那个 class 名称对于你的 JDBC 驱动程序 jar 不正确,那么使用你的 jar 有的任何 class 。此外,如果您的驱动程序未提供 javax.sql.XADataSource
的任何实现,则将配置更改为 javax.sql.ConnectionPoolDataSource
。
虽然我在 <liberty_server>/lib folder
中包含了 t4sqlmx-3.3.jar
,但我得到了以下 jdbc driver not found error
。还需要进行哪些更改?
<library id="sqlmx-lib">
<fileset dir="lib" includes="t4sqlmx-3.3.jar"/>
</library>
错误:
Caused by: java.sql.SQLNonTransientException: DSRA4000E: A valid JDBC driver implementation class was not found for the jdbcDriver dataSource[default-0]/jdbcDriver[default-0] using the library sqlmx-lib. []
at com.ibm.ws.jdbc.internal.JDBCDriverService.classNotFound(JDBCDriverService.java:207)
at com.ibm.ws.jdbc.internal.JDBCDriverService.createAnyDataSource(JDBCDriverService.java:368)
at com.ibm.ws.jdbc.DataSourceService.init(DataSourceService.java:592)
at com.ibm.ws.jca.cm.AbstractConnectionFactoryService.run(AbstractConnectionFactoryService.java:460)
at com.ibm.ws.jca.cm.AbstractConnectionFactoryService.run(AbstractConnectionFactoryService.java:457)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.ws.jca.cm.AbstractConnectionFactoryService.initPrivileged(AbstractConnectionFactoryService.java:457)
at com.ibm.ws.jca.cm.AbstractConnectionFactoryService.createResource(AbstractConnectionFactoryService.java:144)
at com.ibm.ws.resource.internal.ResourceFactoryTrackerData.getService(ResourceFactoryTrackerData.java:120)
... 107 more
修复数据源后,一些 sqlmx 特定错误:
[12/05/18 14:39:26:473 EDT] 000003f8 SystemErr R Caused by: java.sql.SQLException: Pool requests blocked for dataSource[default-0]/connectionManager, connection pool is being shut down.
[12/05/18 14:39:26:473 EDT] 000003f8 SystemErr R at com.ibm.ws.rsadapter.AdapterUtil.toSQLException(AdapterUtil.java:822)
[12/05/18 14:39:26:473 EDT] 000003f8 SystemErr R at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:152)
[12/05/18 14:39:26:474 EDT] 000003f8 SystemErr R at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:116)
[12/05/18 14:39:26:474 EDT] 000003f8 SystemErr R at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:92)
[12/05/18 14:39:26:474 EDT] 000003f8 SystemErr R at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
[12/05/18 14:39:26:474 EDT] 000003f8 SystemErr R ... 95 more
[12/05/18 14:39:26:474 EDT] 000003f8 SystemErr R Caused by: javax.resource.spi.ResourceAllocationException: Pool requests blocked for dataSource[default-0]/connectionManager, connection pool is being shut down.
[12/05/18 14:39:26:475 EDT] 000003f8 SystemErr R at com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:1275)
[12/05/18 14:39:26:475 EDT] 000003f8 SystemErr R at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:573)
[12/05/18 14:39:26:475 EDT] 000003f8 SystemErr R at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:309)
[12/05/18 14:39:26:475 EDT] 000003f8 SystemErr R at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:143)
[12/05/18 14:39:26:475 EDT] 000003f8 SystemErr R ... 98 more
根据堆栈跟踪,您似乎已在 server.xml 中配置了一个 <dataSource>
元素,但未将其包含在您的问题中。使用您提供的 <library>
配置,您的配置可能如下所示:
<dataSource jndiName="jdbc/myDB" type="javax.sql.XADataSource">
<jdbcDriver libraryRef="sqlmx-lib" javax.sql.XADataSource="com.tandem.t4jdbc.SQLMXDataSource"/>
<properties databaseName="SAMPLEDB" hostName="localhost" port="12345"/>
</dataSource>
有关如何在 Liberty 中配置数据源的更多信息,请参阅:
Configuring relational database connectivity in Liberty
注意: 基于对 SQL/MX JDBC 驱动程序文档的谷歌搜索,我发现他们的 XADataSource 实现 class 名称是 com.tandem.t4jdbc.SQLMXDataSource
。如果那个 class 名称对于你的 JDBC 驱动程序 jar 不正确,那么使用你的 jar 有的任何 class 。此外,如果您的驱动程序未提供 javax.sql.XADataSource
的任何实现,则将配置更改为 javax.sql.ConnectionPoolDataSource
。