2014-07-23 210 views
2

我使用Spring-jdbc與org.apache.commons.dbcp.BasicDataSource一起使用連接的用戶名和密碼。我想使用BasicDataSource,因爲我只有一個連接。使用Oracle Wallet驗證從Spring-jdbc連接到Oracle數據庫

我有這個代碼:

<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" 
    id="dataSource"> 
    <property name="driverClassName" value="${database.driverClassName}" /> 
    <property name="url" value="${database.url}" /> 
    <property name="username" value="${database.username}" /> 
    <property name="password" value="${database.password}" /> 
</bean> 

現在,我必須使用基於甲骨文錢包認證,我沒有在一個簡單的應用程序的測試問題,而春天,但我不能融入這個新的身份驗證彈簧。有誰知道我該怎麼做?

+0

你能更具體嗎?您是否希望將用戶的密碼存儲在錢包中?或者你是否希望在錢包中存儲證書,然後使用SSL連接?如果你想要做的是使用SSL,那麼你是否也想通過客戶端證書來驗證數據庫用戶? –

回答

2

你提到「簡單的應用程序測試」,所以我假設你需要配置你的單元測試。在一個單元測試配置類(例如class TestSpringWebConfig extends SpringWebConfig)這可以讓你使用一個錢包(獎金:下面是使用代理數據庫帳戶):一個Oracle數據源

System.setProperty("oracle.net.tns_admin", "path/to/your/tnsnames"); 

OracleDataSource ds = new OracleDataSource(); 

Properties props = new Properties(); 
props.put("oracle.net.wallet_location", "(source=(method=file)(method_data=(directory=path/to/your/wallet)))"); 

/* 
    Use the following only if you have a proxy user database account instead of a normal DB account 
    A test user's username could go here though 
*/ 
props.put(OracleConnection.CONNECTION_PROPERTY_PROXY_CLIENT_NAME, "proxy-user-name"); 

ds.setConnectionProperties(props); 
ds.setURL("jdbc:oracle:thin:/@dbAlias"); //dbAlias should match what's in your tnsnames 

return ds; 

還假設你在你的JDK如下:

在JAVA_HOME/JRE/lib/security中/ java.security,添加以下的 「供應商名錄」:

security.provider.11=oracle.security.pki.OraclePKIProvider 

並加入甲骨文以下罐子JAVA_HOME/JRE/lib/ext目錄:

  • osdt_cert.jar
  • osdt_core.jar
  • oraclepki.jar

和當然,上述所有假設ojdbc7罐子是在應用程序的類路徑了。