发生DB2连接授权失败原因:Java不支持安全性机制

Sun*_*hul 6 java database db2 spring-jdbc java-ee

我正在尝试使用DB2JDBC Type4驱动程序配置DB2连接。但我收到此错误。

线程“主”中的异常com.ibm.db2.jcc.am.SqlInvalidAuthorizationSpecException:[jcc] [t4] [201] [11237] [3.64.104]发生了连接授权失败。原因:不支持安全机制。错误代码= -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;  
}
Run Code Online (Sandbox Code Playgroud)

异常日志:

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)
Run Code Online (Sandbox Code Playgroud)

我还尝试了IBM数据服务器驱动程序针对JDBC和SQLJ的这些受支持的机制

-CLIENT
-SERVER
-SERVER_ENCRYPT
-DATA_ENCRYPT
-KERBEROS
-GSSPLUGIN
-KRB_SERVER_ENCRYPT
-GSS_SERVER_ENCRYPT 
Run Code Online (Sandbox Code Playgroud)

为了避免加密问题,我们已将此应用程序部署到linux box。所以在需要安全连接的情况下,但是在那里发生相同的错误。

我使用的DB2 JDBC驱动程序版本v10.1fp1_jdbc_sqlj,而我自己也尝试9.59.1db2jcc4.jar为此目的文件。

我也使用type 2驱动程序尝试过,但是在这种情况下,我收到ClassNotFound错误COM.ibm.db2.jdbc.app.DB2Driver。找不到课程。

但到目前为止,没有任何效果。任何帮助表示赞赏。我一个星期都在努力解决这个问题。

mus*_*cio -1

服务器上配置了什么身份验证方法?是否使用了任何自定义身份验证插件?您可以通过db2 get dbm cfg在数据库服务器上运行来获取此信息。