如何使用 JNDI DataSource for IBM DB2 配置 WebSphere Liberty?

How do I configure WebSphere Liberty with a JNDI DataSource for IBM DB2?

我正在尝试使用可以使用 JNDI 注入的数据源资源配置 WebSphere Liberty 17.0.0.2。无论我做什么,我都会遇到以下错误:

com.ibm.wsspi.injectionengine.InjectionException: CWNEN0030E: The server was unable to obtain an object instance for the java:comp/env/jdbc/db2 reference. The exception message was: CWNEN1006E: The server was unable to obtain an object for the jdbc/db2 binding with the javax.sql.DataSource type. The exception message was: java.sql.SQLNonTransientException: DSRA4000E: A valid JDBC driver implementation class was not found for the jdbcDriver dataSource[db2]/jdbcDriver[default-0] using the library jdbc-library. [d:\libraries\jtopen_9_3\lib\jt400.jar]

Java代码:

@Resource(name = "jdbc/db2")
private DataSource dataSource;

配置(server.xml):

<library id="jdbc-library">
    <fileset dir="d:/libraries/jtopen_9_3/lib" includes="jt400.jar" />
</library>
<dataSource id="db2" jndiName="jdbc/db2">
<jdbcDriver libraryRef="jdbc-library" />
    <properties.db2.jcc serverName="..." user="..." password="..." />
</dataSource>

我不知道为什么找不到 com.ibm.as400.access.AS400JDBCDrivercom.ibm.as400.access.AS400JDBCDataSource,因为它们都可以在 jt400.jar 存档中找到。我错过了什么?

由于您使用的是 IBM i Toolbox JDBC 驱动程序而不是 DB2 Universal JDBC 驱动程序,请尝试将 properties.db2.jcc 更改为 properties.db2.i.toolbox