2011-11-30 28 views
4

我認爲Type 4 JDBC驅動程序是純Java,不需要本地庫。爲什麼DB2 Type 4 JDBC Driver尋找本地庫db2jcct2?

當我在打包爲.war文件的WEB-INF/lib下我的Tomcat應用程序的目錄把db2jcc4.jar,我得到試圖使用應用程序時出現以下錯誤:Got SQLException: com.ibm.db2.jcc.am.SqlException: [jcc][10389][12245][4.12.55] Failure in loading native library db2jcct2, java.lang.UnsatisfiedLinkError

相關的應用程序代碼如下所示並將異常的上市,由於拋至最後一行:

 import com.ibm.db2.jcc.DB2SimpleDataSource; 

     // ... 

     DB2SimpleDataSource main_db2_data_source = new DB2SimpleDataSource(); 
     main_db2_data_source.setUser(main_database_user); 
     main_db2_data_source.setPassword(main_database_password); 
     main_db2_data_source.setServerName(main_database_host); 
     try { 
      Integer main_database_port_integer = Integer.parseInt(main_database_port); 
      main_db2_data_source.setPortNumber(main_database_port_integer); 
     } catch (NumberFormatException exception) { 
      throw new WebException("..."); 
     } 
     Connection main_connection = null; 
     try { 
      main_connection = main_db2_data_source.getConnection(); 

回答

15

我懷疑的問題是,你還沒有告訴它使用4類型的驅動程序 - 同一個jar文件包含類型4和2型司機,我相信。

嘗試:

main_db2_data_source.setDriverType(4); 
+0

非常感謝你:) – necromancer

2

DB2驅動程序需要另一個罐子,其中包括許可證。

此許可證控制連接類型。如果您打算使用「db2 connect」作爲i系列連接到大型機,則應使用相應的許可證。如果您要連接到Linux UNIX或Windows服務器,當您獲取「Data server client for JDBC

+0

感謝,這不是問題,因爲我沒有連接到一臺主機,但在未來的某個時間點,我將需要連接,然後你的建議就會變得有用。 – necromancer

0

時,包含許可證最近我遇到了這個問題,當時我從Glassfish服務器連接到DB2。爲此,我按照下面的步驟解決了這個問題。 請檢查下面的步驟

步驟1)我已經檢查DB2細節domain.xml中file.there我只看到了 用戶名,pwd,請的databaseName,服務器名,端口號,但我還沒有看到DriverType。 手段驅動的類型爲2或4

2)添加驅動程序的類型我已經登錄到GlassFish服務器管理控制檯

資源 - > JDBC - >連接池 - >我們的池名稱 - -.add額外的屬性

這裏我haved加入drivertype是4

因此,我的問題已經解決了

感謝, 拉邁亞Pillala。

1

也試試這個:

Goto Configure Build Path --> Libraries 
          --> JRE System Libraries 
           --> Native Library Location : Set this to %DB2HOME%/BIN 
          (which is where db2jcct2.dll is saved)