Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
Ask Question
I am trying to configure DB2 connection with DB2JDBC Type4 drivers. But I am getting this error.
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
My code is
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 log:
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)
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
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.
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.
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.
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:
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 for Type 4
unless asked by your DBA.
Will help you to make sure that your code will be able to interact with Windows JDBC Drivers
PATH=C:\Program Files\IBM\SQLLIB\BIN\db2jdbc.dll
LIB
will help your code to read right libraries. i.e COM.ibm.db2.jdbc.app.DB2Driver
LIB=;C:\PROGRA~1\IBM\SQLLIB\LIB
ClassPath:
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;
–
Type 2 driver is used when you have the Data server client installed in you machine. If you are running DB2 server in the same client machine, you can you Type 2 server.
Try to use the data server client, in order to catalog the remote database in your local machine, and try to establish a connection via "db2 connect to DBName"
If you can establish the connection, you can do the same in Java. If you can't, you can chanqe the catalogation options, till found the right one. Once you have done that, you can connect to the remote database.
–
–
–
–
–
–
–
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.