java 类.forName(com.ibm.db2.jcc.DB2Driver)在Liberty8.5中不工作

kb5ga3dv  于 2023-03-06  发布在  Java
关注(0)|答案(1)|浏览(175)

我正在尝试配置一个应用程序,这是目前运行在websphere 8.0到websphere liberty。这个应用程序是有创建jdbc连接使用:

Driver DB2Driver = (java.sql.Driver) Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();

这在websphere full profile中运行得很好,但在liberty中却不行。我尝试创建一个库来指向包含db2java.zip的“C:/sqllib/java”目录,但它仍然不起作用。我得到的错误是:

[err] java.lang.ClassNotFoundException: com.ibm.db2.jcc.DB2Driver
[err]     at com.ibm.ws.classloading.internal.AppClassLoader.findClassCommonLibraryClassLoaders(AppClassLoader.java:403)
[err]     at [internal classes]

请帮帮我。
先谢谢你,

mefy6pfw

mefy6pfw1#

您指向了错误的归档文件,该文件带有旧驱动程序。您需要在server.xml中定义它,如下所示:

<library id="DB2JCC4Lib">
    <fileset dir="C:/sqllib/java" includes="db2jcc4.jar db2jcc_license_cisuz.jar"/>
</library>

我还建议使用dataSource而不是Driver:

<dataSource id="db2" jndiName="jdbc/db2">
    <jdbcDriver libraryRef="DB2JCC4Lib"/>
    <properties.db2.jcc databaseName="SAMPLEDB" serverName="localhost" portNumber="50000"/>
</dataSource>

如果需要驱动程序,请参见bkail post explaining how to add classloader。简而言之:
[..]您需要添加一个

<classloader commonLibraryRef="DB2JCC4Lib" />

到server.xml中的<application>

相关问题