6

DB2JDBC Type4 ドライバーを使用して DB2 接続を構成しようとしています。しかし、私はこのエラーが発生しています。

スレッド「メイン」での例外 com.ibm.db2.jcc.am.SqlInvalidAuthorizationSpecException: [jcc][t4][201][11237][3.64.104] 接続許可障害が発生しました。理由: セキュリティ メカニズムがサポートされていません。ERRORCODE=-4214、SQLSTATE=28000

私のコードは

public Connection getConnection() throws ClassNotFoundException, InstantiationException,
                                         IllegalAccessException, SQLException{

   Driver driver = (Driver) Class.forName ( "com.ibm.db2.jcc.DB2Driver" ).newInstance(); 
  DriverManager.registerDriver(driver);
  Connection  connection = DriverManager.getConnection("jdbc:db2://hostname:portnumber
                                           /DBName", "username","password" );
    System.out.println( "From DAO, connection obtained " );
    return connection;  
}

例外ログ:

Exception in thread "main" com.ibm.db2.jcc.am.SqlInvalidAuthorizationSpecException:
[jcc][t4][201][11237][3.64.104] Connection authorization failure occurred. 
Reason: Security mechanism not supported. ERRORCODE=-4214, SQLSTATE=28000
    at com.ibm.db2.jcc.am.bd.a(bd.java:677)
    at com.ibm.db2.jcc.am.bd.a(bd.java:60)
    at com.ibm.db2.jcc.am.bd.a(bd.java:120)
    at com.ibm.db2.jcc.t4.b.f(b.java:2389)
    at com.ibm.db2.jcc.t4.b.a(b.java:1712)
    at com.ibm.db2.jcc.t4.y.b(y.java:3612)
    at com.ibm.db2.jcc.t4.y.a(y.java:477)
    at com.ibm.db2.jcc.t4.y.a(y.java:117)
    at com.ibm.db2.jcc.t4.b.c(b.java:1350)
    at com.ibm.db2.jcc.t4.b.b(b.java:1221)
    at com.ibm.db2.jcc.t4.b.b(b.java:788)
    at com.ibm.db2.jcc.t4.b.a(b.java:760)
    at com.ibm.db2.jcc.t4.b.a(b.java:421)
    at com.ibm.db2.jcc.t4.b.a(b.java:396)
    at com.ibm.db2.jcc.t4.b.<init>(b.java:334)
    at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:232)
    at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:198)
    at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:475)
    at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:116)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at com.test.connection.DB2ConnectionFactory.getConnection(DB2ConnectionFactory.java:19
    at com.test.connection.ConnectionTest.main(ConnectionTest.java:18)

また、IBM Data Server Driver for JDBC and SQLJ でサポートされているこれらのメカニズムも試しました。

-CLIENT
-SERVER
-SERVER_ENCRYPT
-DATA_ENCRYPT
-KERBEROS
-GSSPLUGIN
-KRB_SERVER_ENCRYPT
-GSS_SERVER_ENCRYPT 

暗号化の問題を回避するために、このアプリケーションを Linux ボックスにデプロイしました。安全な接続が必要な場合のSOですが、同じエラーが発生しています。

私は DB2 JDBC Driver version を使用しており、この目的のためにファイルもv10.1fp1_jdbc_sqlj試しました。9.59.1db2jcc4.jar

ドライバーを使用して試してみましtype 2たが、その場合 ClassNotFound エラーが発生しますCOM.ibm.db2.jdbc.app.DB2Driver。クラスが見つかりません。

しかし、これまでのところ何も機能していません。どんな助けでも大歓迎です。私は一週間以上この問題に苦しんでいます。

4

3 に答える 3

3

それは今働いています。問題は DB2 にありました。環境変数が正しいフォルダーを指していることを確認する必要があります。そのため、必ず次のことを行ってください。

  • 環境変数を変更するたびに、またはすべての変更後にマシンを再起動する必要があります。
  • JDBC Type 2ドライバを使用していることを確認してください。Type 4DBA から求められない限り、使用しないでください。

コードが Windows JDBC ドライバーとやり取りできることを確認するのに役立ちます

PATH=C:\Program Files\IBM\SQLLIB\BIN\db2jdbc.dll

LIBコードが適切なライブラリを読み取るのに役立ちます。すなわちCOM.ibm.db2.jdbc.app.DB2Driver

LIB=;C:\PROGRA~1\IBM\SQLLIB\LIB

クラスパス:

ClassPath = .;C:\PROGRA~1\IBM\SQLLIB\java\db2java.jar;
C:\PROGRA~1\IBM\SQLLIB\java\db2jcc.jar;C:\PROGRA~1\IBM\SQLLIB\java\sqlj.zip;
C:\PROGRA~1\IBM\SQLLIB\BIN\db2jdbc.dll;
C:\PROGRA~1\IBM\SQLLIB\java\db2jcc.jar;
C:\PROGRA~1\IBM\SQLLIB\java\sqlj.zip;
C:\PROGRA~1\IBM\SQLLIB\java\db2jcc_license_cu.jar;
C:\PROGRA~1\IBM\SQLLIB\java\db2java.jar;
C:\PROGRA~1\IBM\SQLLIB\BIN;C:\PROGRA~1\IBM\SQLLIB\java\jdk;
于 2013-05-27T17:18:37.783 に答える
0

タイプ 2 ドライバーは、ご使用のマシンに Data サーバー・クライアントがインストールされている場合に使用されます。同じクライアント マシンで DB2 サーバーを実行している場合は、Type 2 サーバーを実行できます。

ローカル マシンでリモート データベースをカタログ化するために、データ サーバー クライアントを使用してみてください。また、「db2 connect to DBName」を介して接続を確立してみてください。接続を確立できる場合は、Java でも同じことができます。できない場合は、適切なオプションが見つかるまでカタログ化オプションを変更できます。これが完了したら、リモート データベースに接続できます。

于 2013-05-23T16:24:04.567 に答える