Tomcat'ta JDBC aracılığıyla veritabanı bağlantısı kullanıyorum. Ortamımız Tomcat 7 + JDK 8 ve Oracle 12c'dir.Tomcat, TCPS'yi oluşturamıyor Oracle JDBC bağlantısı
Yalnızca Oracle veritabanına TCPS aracılığıyla bağlandığım için (ve Oracle'ın cüzdanını kullanıyoruz), bu yüzden mevcut Tomcat server.xml'imi Oracle'a JDBC bağlantısı oluşturmak için değiştirmem gerekiyor. Benim güncellenmiş yapılandırma pasajı
<Resource auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver"
initialSize="10"
jdbcInterceptors="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer;org.apache.tomcat.jdbc.pool.interceptor.SlowQueryReportJmx(threshold=10000)"
jmxEnabled="true" logAbandoned="true" maxActive="100" maxIdle="100"
maxWait="10000"
name="jdbc/jndiconnection" password="XXXXXX" removeAbandoned="true"
type="javax.sql.DataSource" url=""jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=hostname)(PORT=1234))(CONNECT_DATA=(SERVICE_NAME=servicename)))"
username="XXXXXXXX" validationInterval="30000" validationQuery="SELECT 1 FROM DUAL" />
Ben, parametre olarak truststore/trusttypey/deposu/KeyType eklendi ancak hata var: Sonra
Caused by: oracle.net.ns.NetException: Unable to initialize ssl context.
at oracle.net.nt.CustomSSLSocketFactory.getSSLSocketFactory(CustomSSLSocketFactory.java:296)
at oracle.net.nt.TcpsNTAdapter.connect(TcpsNTAdapter.java:117)
at oracle.net.nt.ConnOption.connect(ConnOption.java:133)
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:370)
... 73 more
Caused by: oracle.net.ns.NetException: Unable to initialize the key store.
at oracle.net.nt.CustomSSLSocketFactory.getKeyManagerArray(CustomSSLSocketFactory.java:369)
at oracle.net.nt.CustomSSLSocketFactory.getSSLSocketFactory(CustomSSLSocketFactory.java:279)
... 76 more
Caused by: java.security.KeyStoreException: SSO not found
at java.security.KeyStore.getInstance(KeyStore.java:851)
at oracle.net.nt.CustomSSLSocketFactory.getKeyManagerArray(CustomSSLSocketFactory.java:357)
... 77 more
Caused by: java.security.NoSuchAlgorithmException: SSO KeyStore not available
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at java.security.Security.getImpl(Security.java:695)
at java.security.KeyStore.getInstance(KeyStore.java:848)
... 78 more
ben talimat takip: Ancak makalede https://sysapp.wordpress.com/2010/08/31/how-to-oracle-wallet-with-jdbc-thin-driver-datasource-tomcat/ o TCP olarak PROTOCAL kullanıyor, ancak TCPS değil.
<Resource
name="jdbc/confluence"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:/@mywallet"
connectionProperties=”oracle.net.wallet_location=/opt/wallet"/>
Sonra hata var: Ben TCP'lerin aracılığıyla bağlanmak için Java örnek kodunu yazdım
Caused by: oracle.net.ns.NetException: The method specified in wallet_location is not supported. Location: /opt/wallet
at oracle.net.nt.CustomSSLSocketFactory.getSSLSocketFactory(CustomSSLSocketFactory.java:219)
at oracle.net.nt.TcpsNTAdapter.connect(TcpsNTAdapter.java:117)
at oracle.net.nt.ConnOption.connect(ConnOption.java:133)
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:370)
... 73 more
ve bağlantı gayet iyi çalışıyor. Yapılandırma dosyasında bazı önemli noktaları kaçırdım mı? Ve JDBC üzerinden Oracle'ın TCPS bağlantısını oluşturmak için başka bir yolu var mı?
Aslında burada gönderdiğiniz şey ile aynı şeyi yaptım, ama aynı hatayı aldım. Oracle cüzdan veri kaynağı oluşturmak başarısız olacak gibi görünüyor. Sonunda kodda Oracle cüzdan veritabanı bağlantısı oluşturmak zorunda kaldım, en iyi çözüm olmayabilir ama işe yarıyor. – mikero