Class.forName(com.ibm.db2.jcc.DB2Driver)在Liberty8.5中不起作用

时间:2014-08-22 18:50:39

标签: java jdbc classnotfoundexception websphere-liberty dbconnection

我正在尝试将当前在websphere 8.0中运行的应用程序配置为websphere自由。此应用程序正在使用:

创建jdbc连接
     Driver DB2Driver = (java.sql.Driver)     Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();

这在websphere完整个人资料中完美运行。但不是在自由中。我尝试创建一个库,指向包含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] 

请帮忙。

提前致谢,

1 个答案:

答案 0 :(得分:0)

你指的是错误的存档,那是一个旧驱动程序。您需要在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>