Oracle
 sql >> Database >  >> RDS >> Oracle

Connettiti a Oracle DB da Spring-jdbc con l'autenticazione Oracle Wallet

Menzioni "test dell'applicazione semplice", quindi suppongo che tu debba configurare i tuoi unit test. In una classe di configurazione di unit test (ad esempio class TestSpringWebConfig extends SpringWebConfig ) questo ti ottiene un'origine dati Oracle utilizzando un portafoglio (bonus:il seguente utilizza un account di database proxy):

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;

Ciò presuppone anche che tu abbia quanto segue nel tuo JDK:

In JAVA_HOME/jre/lib/security/java.security, aggiungi quanto segue all'"Elenco dei provider":

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

E aggiungi i seguenti jar da Oracle a JAVA_HOME/jre/lib/ext:

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

E, naturalmente, tutto quanto sopra presuppone che il jar ojdbc7 sia già nel percorso di classe dell'applicazione.