Подключение кошелька JDBC OracleJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Подключение кошелька JDBC Oracle

Сообщение Anonymous »

Я столкнулся с проблемой подключения моего Java-приложения к базе данных Oracle с использованием кошелька Oracle в качестве хранилища паролей.

Чтобы изолировать проблему, я создал небольшой основной класс следующим образом:

Код: Выделить всё

public static void main(String[] args) {
Connection conn;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
System.setProperty("oracle.net.tns_admin", "c:\\tns");
OracleDataSource ds = new OracleDataSource();
Properties props = new Properties();
System.setProperty("oracle.net.wallet_location", "c:/wallet2");

ds.setConnectionProperties(props);
ds.setURL("jdbc:oracle:thin:/@XE2");
Provider p;
p = new OraclePKIProvider();
Security.insertProviderAt(p, 3);
conn = ds.getConnection();

} catch (SQLException ex) {
Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);

} catch (ClassNotFoundException ex) {
Logger.getLogger(main.class.getName()).log(Level.SEVERE, null, ex);
}
в каталоге c:\tns у меня есть следующие файлы:

Код: Выделить всё

sqlnet.ora
tnsnames.ora
это список sqlnet.ora

Код: Выделить всё

SQLNET.AUTHENTICATION_SERVICES = (NTS)
names.directory_path = TNSNAMES
SQLNET.WALLET_OVERRIDE = TRUE
#WALLET_LOCATION = (SOURCE=(METHOD=FILE)METHOD_DATA=(DIRECTORY=c:\wallet))
WALLET_LOCATION = (SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=c:/wallet)))
что касается tnsnames

Код: Выделить всё

...
XE2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
В c:\wallet2 находятся следующие файлы:

Код: Выделить всё

cwallet.sso
ewallet.p12
файл ранее был создан с помощью orapki, и есть моя запись с именем XE2 с правильными учетными данными. Когда я запускаю код, я получаю следующее исключение

Код: Выделить всё

Could not open wallet. java.io.IOException: Could not open wallet. Check password
включив трассировку Oracle, я вижу эти строки:

Код: Выделить всё

mar 02, 2017 3:57:00 PM oracle.jdbc.driver.DatabaseError findMessage
TRACE_30:          Enter: "ORA-17168", java.io.IOException: Could not open wallet. java.io.IOException: Could not open wallet. Check password
mar 02, 2017 3:57:00 PM oracle.jdbc.driver.Message11 msg
TRACE_30: 72B6CBCC Enter: "ORA-17168", java.io.IOException: Could not open wallet. java.io.IOException: Could not open wallet. Check password
mar 02, 2017 3:57:00 PM oracle.jdbc.driver.Message11 msg
TRACE_30: 72B6CBCC Exit [0.066509ms]
и

Код: Выделить всё

mar 02, 2017 3:57:00 PM oracle.jdbc.driver.PhysicalConnection getSecretStoreCredentials
GRAVE:          Throwing SQLException: 168java.io.IOException: Could not open wallet. java.io.IOException: Could not open wallet. Check password
Кто-нибудь может мне помочь?
Спасибо, что прочитали.
р.

Подробнее здесь: https://stackoverflow.com/questions/425 ... connection
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»