使用Java JDBC驱动程序连接到DB2源时出现异常

时间:2013-06-20 09:32:56

标签: java authentication jdbc db2

我正在尝试使用java连接DB2数据库,在我给出的驱动程序和连接字符串详细信息下面,

Class.forName("com.ibm.db2.jcc.DB2Driver");

DB2DataSource db2ds = new DB2DataSource();
db2ds.setServerName("servername");
db2ds.setPortNumber(portnumber);
db2ds.setDatabaseName(databasename);
db2ds.setUser(username);
db2ds.setPassword(password);
db2ds.setSecurityMechanism(DB2BaseDataSource.ENCRYPTED_USER_AND_DATA_SECURITY);
db2ds.setDriverType(4);    
sourceConnection=db2ds.getConnection();

对于这个连接,我添加了以下的罐子

1)db2jcc.jar 
2)db2jcc_license_cu.jar

但我收到以下错误,

com.ibm.db2.jcc.a.SqlException: java.security.InvalidAlgorithmParameterException is caught when initializing EncryptionManager 'Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive)'
at com.ibm.db2.jcc.a.x.<init>(x.java:89)
at com.ibm.db2.jcc.b.b.lc(b.java:2353)
at com.ibm.db2.jcc.b.b.A(b.java:1190)
at com.ibm.db2.jcc.b.b.b(b.java:759)
at com.ibm.db2.jcc.b.b.a(b.java:725)
at com.ibm.db2.jcc.b.b.a(b.java:430)
at com.ibm.db2.jcc.b.b.<init>(b.java:374)
at com.ibm.db2.jcc.DB2DataSource.getSimpleConnection(DB2DataSource.java:87)
at com.ibm.db2.jcc.DB2DataSource.getConnection(DB2DataSource.java:65)
at com.ibm.db2.jcc.DB2DataSource.getConnection(DB2DataSource.java:47)
at TestDB2.main(TestDB2.java:73)

我尝试了不同的安全机制,但我仍然遇到同样的错误。以下选项我已尝试过安全机制,

1) ENCRYPTED_USER_AND_DATA_SECURITY 
2) CLEAR_TEXT_PASSWORD_SECURITY 
3) ENCRYPTED_PASSWORD_SECURITY 
4) ENCRYPTED_USER_AND_PASSWORD_SECURITY
5)ENCRYPTED_USER_PASSWORD_AND_DATA_SECURITY

我正在使用JDK 1.6.0版本来开发代码

请指导成功连接需要做些什么。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您必须使用SecurityProviderBouncyCastleProvider对您来说是个不错的选择。所有你需要做的就是,getConnection()方法的第一步使用下面的行:

 Security.addProvider(new BouncyCastleProvider());