DB2 Connection Authorization Faliure Occured Reason: Security Mechanism not supported in Java(发生 DB2 连接授权失败原因:Java 中不支持安全机制)
问题描述
我正在尝试使用 DB2JDBC Type4 驱动程序配置 DB2 连接.但是我收到了这个错误.
I am trying to configure DB2 connection with DB2JDBC Type4 drivers. But I am getting this error.
线程main"中的异常com.ibm.db2.jcc.am.SqlInvalidAuthorizationSpecException:[jcc][t4][201][11237][3.64.104] 连接授权失败发生了.原因:不支持安全机制.错误代码=-4214,SQLSTATE=28000
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
我的代码是
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 支持的这些机制
I also have tried these supported mechanisms by IBM Data Server Driver for JDBC and SQLJ
-CLIENT
-SERVER
-SERVER_ENCRYPT
-DATA_ENCRYPT
-KERBEROS
-GSSPLUGIN
-KRB_SERVER_ENCRYPT
-GSS_SERVER_ENCRYPT
为了避免加密问题,我们将此应用程序部署到 linux 机器上.所以如果需要安全连接,但那里发生同样的错误.
In order to avoid encryption problem we have deployed this application to linux box. SO in case need secure connection, but same error is occurring there.
我使用的是DB2 JDBC Driver版本v10.1fp1_jdbc_sqlj
,我也试过9.5
和9.1
和db2jcc4.jar
文件用于此目的.
I am using DB2 JDBC Driver version v10.1fp1_jdbc_sqlj
, and I have also tried 9.5
and 9.1
and db2jcc4.jar
file for this purpose.
我也尝试过使用 type 2
驱动程序,但在这种情况下 COM.ibm.db2.jdbc.app.DB2Driver
会出现 ClassNotFound 错误.找不到类.
I have also tried it using type 2
drivers, but I am getting ClassNotFound error in that case COM.ibm.db2.jdbc.app.DB2Driver
. class not found.
但到目前为止没有任何效果.任何帮助表示赞赏.一个多星期以来,我一直在努力解决这个问题.
But nothing worked so far. Any help is appreciated. I am struggling with this problem over a week.
推荐答案
现在可以了.问题出在 DB2 上.您必须确保您的环境变量指向正确的文件夹.所以一定要做到以下几点:
It's working now. The problem was with DB2. You have to make sure that your environment variables point to the correct folders. So make sure to do the following:
- 每次更改或对环境变量进行所有更改后都必须重新启动计算机.
- 确保您使用的是
JDBC Type 2
驱动程序.除非您的 DBA 要求,否则不要选择Type 4
.
- Must reboot your machine after each change or after all the change you made to your environment variables.
- Make sure that you are using
JDBC Type 2
drivers. Do not go forType 4
unless asked by your DBA.
将帮助您确保您的代码能够与 Windows JDBC 驱动程序交互
Will help you to make sure that your code will be able to interact with Windows JDBC Drivers
PATH=C:Program FilesIBMSQLLIBBINdb2jdbc.dll
LIB
将帮助您的代码读取正确的库.即 COM.ibm.db2.jdbc.app.DB2Driver
LIB
will help your code to read right libraries. i.e COM.ibm.db2.jdbc.app.DB2Driver
LIB=;C:PROGRA~1IBMSQLLIBLIB
类路径:
ClassPath = .;C:PROGRA~1IBMSQLLIBjavadb2java.jar;
C:PROGRA~1IBMSQLLIBjavadb2jcc.jar;C:PROGRA~1IBMSQLLIBjavasqlj.zip;
C:PROGRA~1IBMSQLLIBBINdb2jdbc.dll;
C:PROGRA~1IBMSQLLIBjavadb2jcc.jar;
C:PROGRA~1IBMSQLLIBjavasqlj.zip;
C:PROGRA~1IBMSQLLIBjavadb2jcc_license_cu.jar;
C:PROGRA~1IBMSQLLIBjavadb2java.jar;
C:PROGRA~1IBMSQLLIBBIN;C:PROGRA~1IBMSQLLIBjavajdk;
这篇关于发生 DB2 连接授权失败原因:Java 中不支持安全机制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:发生 DB2 连接授权失败原因:Java 中不支持安全机制
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- Java包名称中单词分隔符的约定是什么? 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01