2017-03-02 5 views
2

oracle walletをパスワード・ストアとして使用して、Javaアプリケーションをoracleデータベースに接続する際に問題が発生しました。JDBC oracle wallet connection

は、私は以下のように小さなメインクラスなさ問題切り分けするには、次のディレクトリc

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); 
} 

:私は、次のファイルをしました\ 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ため

C言語で
... 
XE2 = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) 
    (CONNECT_DATA = 
     (SERVER = DEDICATED) 
     (SERVICE_NAME = XE) 
    ) 
) 

:\ wallet2次のファイルがあります。

cwallet.sso 
ewallet.p12 

ファイルは、以前のorapkiで生成され、正しい資格を持つXE2という名前の私のエントリがありました。

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 

誰もが私を助けることができる:私は、コードを実行すると、私は次の例外

Could not open wallet. java.io.IOException: Could not open wallet. Check password 

Oracleトレースを有効にする私はこれらの行を見ることができますを取得しますか? 読んでいただきありがとうございます。 r。

+0

ORA-17168は秘密ストアに問題が発生しました。 はウォレットの場所の問題のようです。ウォレットの場所でウォレットが開いていることを確認し(cwallet.sso)、mkstoreユーティリティを使用してこのウォレットに正しい資格情報が含まれていることを確認します。正しい場所を指しているかどうか確認してください。 – Maverick

+0

パスは正しいですが、そこにはcwallet.ssoがあります。さらに、mkstoreユーティリティを使用してキーストアの管理をテストし、XEのエントリが存在する –

答えて

-1

SQLNET.AUTHENTICATION_SERVICES =(NTS)

は、その代わりに、TNSのTNSすべきではありません?

関連する問題