2010-09-19 3 views
1

Может ли любое тело сказать мне, что означает это исключение, его запутывает, потому что я пробовал все возможные способы изменения пути к хранилищу ключей .. не работает.Просьба сообщить об исключении

Окружающая среда: Сервер баз данных ORACLE, настройка SSL

Exception in thread "main" java.sql.SQLException: Io exception: 

java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty 
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112) 
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146) 
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255) 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387) 
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414) 
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165) 
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35) 
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801) 
at java.sql.DriverManager.getConnection(DriverManager.java:582) 
at java.sql.DriverManager.getConnection(DriverManager.java:154) 
at project1.JDBCSSLTest.getConnection(JDBCSSLTest.java:42) 
at project1.JDBCSSLTest.run(JDBCSSLTest.java:22) 
at project1.JDBCSSLTest.main(JDBCSSLTest.java:49) 

Класс Java я использую.

package project1; 

import java.security.Security; 

import java.sql.Connection; 
import java.sql.SQLException; 

import java.sql.*; 
import oracle.jdbc.OracleDriver; 

public class JDBCSSLTest 
{ 

public JDBCSSLTest() 
{ 
// must enable this 
Security.addProvider(new oracle.security.pki.OraclePKIProvider()); 
} 

public void run() throws SQLException 
{ 
Connection conn = getConnection(); 
System.out.println("Auto Commit = " + conn.getAutoCommit()); 
conn.close(); 
} 

public static Connection getConnection() throws SQLException 
{ 
String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)" + 
       "(HOST=localhost)(PORT=2484))" + 
       "(CONNECT_DATA=(SERVICE_NAME=orcl)))"; 
java.util.Properties props = new java.util.Properties(); 

props.setProperty("user", "system"); 
props.setProperty("password", "weblogic"); 
    props.setProperty("javax.net.ssl.trustStore","C://lib//ewallet.p12"); 
    props.setProperty("javax.net.ssl.trustStoreType","PKCS12"); 
    props.setProperty("javax.net.ssl.trustStorePassword","weblogic123"); 
    props.setProperty("oracle.net.ssl_cipher_suites", "SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA"); 

DriverManager.registerDriver(new OracleDriver()); 
Connection conn = DriverManager.getConnection(url, props); 
return conn; 
} 

public static void main(String[] args) throws SQLException 
{ 
JDBCSSLTest dSTest = new JDBCSSLTest(); 
dSTest.run(); 
System.out.println("all done.."); 
} 
} 

ответ

1

От this Oracle document:

“java.sql.SQLException: Io exception: java.lang.RuntimeException: 
Unexpected error: java.security.InvalidAlgorithmParameterException: 
the trustAnchors parameter must be non-empty”: 

если вы используете PKCS12 бумажники и поставщик PKI Oracle, не включен должным образом. Это исключение происходит от реализации PKCS12 от Sun (поставщик PKI от Sun) , который несовместим с кошельками Oracle. Поставщик PKI Oracle должен быть правильно включен для PKCS12 как статически, так и динамически, если вы используете кошельки PKCS12 .

Включение поставщика PKI описано в разделе 2.2.4 того же документа.

+0

Большое спасибо Стивену. Я тянул свои волосы с последних 1 недели. вы просто сделали мои выходные .. его работа сейчас !!! Еще раз спасибо – user414977

+0

Мне удалось заставить его работать в JDeveloper, но когда я упаковываю его в военный файл, он не работает. Пожалуйста, предоставьте – user414977

+0

Убедитесь, что все библиотеки, включенные в проект JDeveloper, включены в военный файл. –

1

Я не знаком с этим это, но идя информацию исключения по кода пользователя был запущен

at project1.JDBCSSLTest.getConnection(JDBCSSLTest.java:42) 

и выполнение отсутствует нужное свойство при получении соединения

Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty 

Похоже, что вы не настроили это свойство «trustAnchors».

+0

Мне удалось заставить его работать в JDeveloper, но когда я упаковываю его в военный файл, он не работает. Пожалуйста, попросите – user414977

Смежные вопросы