点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们正在尝试使用Hybris中的...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我们正在尝试使用Hybris中的...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我们正在尝试使用Hybris中的TCPS通过Internet连接到Oracle数据库,但是我们一直在出错。 我们已经确认,数据库连接可以与sqlplus以及简单的Java测试程序一起使用,因此我们知道可以连接到数据库。 问题是当我们尝试通过Hybris连接时。 有没有人正确配置并使其正常工作?
local.properties中的数据库配置:
external.db.driver = oracle.jdbc.driver.OracleDriver external.db.url = jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS =(PROTOCOL = tcps)(HOST =
mydomain.mydomain.com )(PORT = 3002))(CONNECT_DATA =(SERVICE_NAME = ISAT)))external.db.ssl -cipher-suites =(SSL_DH_anon_WITH_3DES_EDE_CBC_SHA,SSL_DH_anon_WITH_DES_CBC_SHA),SSL_DH_anon_WITH_DES_CBC_SHA)external.db.user = abc123 external.db.pass = abc123 external.db.trustStore =/usr/lib/oracle/wallets。 SSO external.db.keyStore =/usr/lib/oracle/wallets/cwallet.sso external.db.keyStoreType = SSO javax.net.ssl.trustStore =/usr/lib/oracle/wallets/cwallet.sso javax.net.ssl.trustStoreType = SSO
jdbc.connection.pool.min = 25 jdbc.connection.pool.max = 100 jdbc.connection.pool.initial = 1 jdbc.connection.pool.inactivity.timeout = 180 jdbc.connection.pool.wait.timeout = 120
我们的资源/mainprojectcore-spring.xml文件中的Spring配置:
<属性名称=" connectionCachingEnabled"值=" true"/>
<道具>
$ {jdbc.connection.pool.min}
$ {jdbc.connection.pool.max}
$ {jdbc.connection.pool.initial}
$ {jdbc.connection.pool.inactivity.timeout}
$ {jdbc.connection.pool.wait.timeout}
为真
为真
从双重中选择1
是真的
<道具>
$ {external.db.ssl-cipher-suites}
$ {external.db.trustStore}
$ {external.db.trustStoreType}
Java.security:
security.provider.1 = sun.security.provider.Sun security.provider.2 = sun.security.rsa.SunRsaSign security.provider.3 = oracle.security.pki.OraclePKIProvider security.provider.4 = sun。 security.ec.SunEC security.provider.5 = com.sun.net.ssl.internal.ssl.Provider security.provider.6 = com.sun.crypto.provider.SunJCE security.provider.7 = sun.security.jgss .SunProvider security.provider.8 = com.sun.security.sasl.Provider security.provider.9 = org.jcp.xml.dsig.internal.dom.XMLDSigRI security.provider.10 = sun.security.smartcardio.SunPCSC
有效的骨架测试:
import java.security.Security;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.PreparedStatement;
导入java.util.Properties;
导入java.sql.ResultSet;
公共类TestJdbc {
公共静态void main(String [] args)引发异常{
//Security.addProvider(new oracle.security.pki.OraclePKIProvider());
字符串url =" jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS =(PROTOCOL = tcps)(HOST = mydomain.mydomain.com)(PORT = 3002))(CONNECT_DATA =(SERVICE_NAME = ISAT)))");
属性props = new Properties();
props.setProperty(" user"," abc123");
props.setProperty(" password"," abc123");
//props.setProperty(" oracle.net.ssl_cipher_suites","((SSL_DH_anon_WITH_3DES_EDE_CBC_SHA,SSL_DH_anon_WITH_RC4_128_MD5,SSL_DH_anon_WITH_DES_CBC_SHA)");
props.setProperty(" javax.net.ssl.trustStore","/img/usr/lib/oracle/wallets/cwallet.sso");
props.setProperty(" javax.net.ssl.trustStoreType"," SSO");
连接conn = DriverManager.getConnection(url,props);
PreparedStatement语句= conn.prepareStatement("从mydatabase.MY_STUFF中选择ORA_DESCRIPTION,其中rownum <50");
statement.execute();
ResultSet结果= statement.getResultSet();
while(results.next()){
System.out.println(results.getString(1));
};
}
}
我们遇到的错误:
错误[NewProductsEcommLoad(Nightly):: de.hybris.platform.servicelayer.internal.jalo.ServicelayerJob](NewProductsEcommLoad(Nightly))[Job]抛出异常无法获得JDBC连接; 嵌套的异常是java.sql.SQLRecoverableException:IO错误:网络适配器无法建立连接
org.springframework.jdbc.CannotGetJdbcConnectionException:无法获取JDBC连接。 嵌套的异常是java.sql.SQLRecoverableException:IO错误:网络适配器无法建立连接
在org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:80)
在org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:390)
在org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:470)
在org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:480)
在com.mydomain.hybris.dao.impl.CUSTOMNightlyLoadDAOImpl.getCUSTOMCategoryInfo(CUSTOMNightlyLoadDAOImpl.java:945)
在com.mydomain.hybris.cron.NewProductsEcommLoadNightlyStaged.processCategories(NewProductsEcommLoadNightlyStaged.java:357)
在com.mydomain.hybris.cron.NewProductsEcommLoadNightlyStaged.perform(NewProductsEcommLoadNightlyStaged.java:239)
在com.mydomain.hybris.cron.NewProductsEcommLoadNightlyStaged $$ FastClassBySpringCGLIB $$ bdfd982b.invoke(<生成>)
在org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
在org.springframework.aop.framework.CglibAopProxy $ CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
在org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java
在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
在org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:44)
在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
在org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
在org.springframework.aop.framework.CglibAopProxy $ DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
at com.mydomain.hybris.cron.NewProductsEcommLoadNightlyStaged $$ EnhancerBySpringCGLIB $$ 102cdfde.perform(<生成>)
在de.hybris.platform.servicelayer.internal.jalo.ServicelayerJob.performCronJob(ServicelayerJob.java:39)
在de.hybris.platform.cronjob.jalo.Job.execute(Job.java:1278)
在de.hybris.platform.cronjob.jalo.Job.performImpl(Job.java:803)
在de.hybris.platform.cronjob.jalo.Job.access $ 1(Job.java:756)
在de.hybris.platform.cronjob.jalo.Job $ JobRunable.run(Job.java:676)
在de.hybris.platform.util.threadpool.PoolableThread.run(PoolableThread.java:196)
原因:java.sql.SQLRecoverableException:IO错误:网络适配器无法建立连接
在oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:458)
在oracle.jdbc.driver.PhysicalConnection。(PhysicalConnection.java:546)
在oracle.jdbc.driver.T4CConnection。(T4CConnection.java:236)
在oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
在oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
在oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280)
在oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:207)
在oracle.jdbc.pool.OracleConnectionPoolDataSource.getPhysicalConnection(OracleConnectionPoolDataSource.java:139)
在oracle.jdbc.pool.OracleConnectionPoolDataSource.getPooledConnection(OracleConnectionPoolDataSource.java:88)
在oracle.jdbc.pool.OracleImplicitConnectionCache.makeCacheConnection(OracleImplicitConnectionCache.java:1598)
在oracle.jdbc.pool.OracleImplicitConnectionCache.makeOneConnection(OracleImplicitConnectionCache.java:515)
在oracle.jdbc.pool.OracleImplicitConnectionCache.defaultUserPrePopulateCache(OracleImplicitConnectionCache.java:222
在oracle.jdbc.pool.OracleImplicitConnectionCache。(OracleImplicitConnectionCache.java:198)
在oracle.jdbc.pool.OracleConnectionCacheManager.createCache(OracleConnectionCacheManager.java:306)
在oracle.jdbc.pool.OracleConnectionCacheManager.createCache(OracleConnectionCacheManager.java:192)
在oracle.jdbc.pool.OracleDataSource.cactialize(OracleDataSource.java:414)
在oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:393)
在oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:179)
在oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:157)
在org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
在org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
...另外24个
由以下原因引起:oracle.net.ns.NetException:网络适配器无法建立连接
在oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:392)
在oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:434)
在oracle.net.ns.NSProtocol。建立连接(NSProtocol.java:687)
在oracle.net.ns.NSProtocol.connect(NSProtocol.java:247)
在oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1102)
原因:oracle.net.ns.NetException:无法初始化ssl上下文。
在oracle.net.nt.CustomSSLSocketFactory.getSSLSocketFactory(CustomSSLSocketFactory.java:327)
在oracle.net.nt.TcpsNTAdapter.connect(TcpsNTAdapter.java:117)
在oracle.net.nt.ConnOption.connect(ConnOption.java:133)
在oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:370)
...还有49个
原因:oracle.net.ns.NetException:无法初始化信任存储。
在oracle.net.nt.CustomSSLSocketFactory.getTrustManagerArray(CustomSSLSocketFactory.java:415)
在oracle.net.nt.CustomSSLSocketFactory.getSSLSocketFactory(CustomSSLSocketFactory.java:311)
...另外52个
原因:java.security.KeyStoreException:找不到SSO
在java.security.KeyStore.getInstance(KeyStore.java:851)
在oracle.net.nt.CustomSSLSocketFactory.getTrustManagerArray(CustomSSLSocketFactory.java:403)
...还有53个
原因:java.security.NoSuchAlgorithmException:SSO密钥库不可用
在sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
在java.security.Security.getImpl(Security.java:695)
在java.security.KeyStore.getInstance(KeyStore.java:848)
...更多54
嗨,埃文(Evan)
这与hybris无关,但是基于JDBC瘦驱动程序的Oracle DB连接在建立SSL连接时也遇到了问题,该问题的解决方案可能非常简单,例如属性名称不正确或您缺少某些属性。
我可以从堆栈跟踪中看到异常即将到来,因为无法找到正确的密钥库。 添加密钥库属性,然后尝试重新连接
我还建议仔细阅读第pg-15号文档,这可能会有所帮助: http://www.oracle.com/technetwork/database/enterprise-edition/wp-oracle-jdbc-thin-ssl-130128.pdf p>
一周热门 更多>