我正在尝试使用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版本来开发代码
请指导成功连接需要做些什么。
提前致谢。
答案 0 :(得分:0)
您必须使用SecurityProvider
。 BouncyCastleProvider
对您来说是个不错的选择。所有你需要做的就是,getConnection()
方法的第一步使用下面的行:
Security.addProvider(new BouncyCastleProvider());