SQLMX / IBM-liberty-datasource: допустимый драйвер jdbc не найден - PullRequest
0 голосов
/ 12 мая 2018

Я получаю ниже jdbc driver not found error, хотя я включил t4sqlmx-3.3.jar в <liberty_server>/lib folder. Какие дополнительные изменения требуются?

<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$2.run(AbstractConnectionFactoryService.java:460)
    at com.ibm.ws.jca.cm.AbstractConnectionFactoryService$2.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$1.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

1 Ответ

0 голосов
/ 12 мая 2018

Судя по трассировке стека, кажется, что вы настроили элемент <dataSource> в вашем server.xml, но не включили его в свой вопрос. Используя предоставленную вами конфигурацию <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 см. В
. Настройка подключения к реляционной базе данных в Liberty

ПРИМЕЧАНИЕ: Основываясь на поиске в Google для документации драйвера JDBC для SQL / MX, я обнаружил, что их имя класса реализации XADataSource - com.tandem.t4jdbc.SQLMXDataSource. Если это имя класса не подходит для вашего jar-драйвера JDBC, используйте любой класс, который есть в вашем jar-файле. Кроме того, если ваш драйвер не обеспечивает реализацию javax.sql.XADataSource, измените конфигурацию на javax.sql.ConnectionPoolDataSource.

...