2
oracle 지갑을 암호 저장소로 사용하여 Java 응용 프로그램을 Oracle 데이터베이스에 연결하는 중 문제가 있습니다.JDBC oracle wallet connection
나는 다음과 같은 작은 Main 클래스 만든 문제를 분리하려면 : 디렉토리 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.
ORA-17168이 (가) 에 Secret Store에 문제가 발생 했으므로 지갑 위치 문제와 유사합니다. 지갑 위치에 열려있는 지갑 (cwallet.sso)이 있는지 확인하고이 지갑에 mkstore 유틸리티를 사용하여 올바른 자격 증명이 포함되어 있는지 확인하십시오. 올바른 위치를 가리키고 있는지 확인하십시오. – Maverick
경로가 정확하고 cwallet.sso가 있습니다. 또한 mkstore 유틸리티를 사용하여 keystore의 contets를 테스트하고 XE에 대한 항목이 있는지 확인합니다. –