Skip to content
Advertisement

Execution stuck: Hibernate + Oracle DB with Wallet : DriverManagerConnectionProviderImpl – HHH000115: Hibernate connection pool size: 20 (min=1)

When working with Hibernate and Oracle DB with Wallet. Getting below error:

org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl HHH000115: Hibernate connection pool size: 20 (min=1)

I am trying currently with

Java/JDK: 17

Hibernate: ‘org.hibernate:hibernate-core:5.4.27.Final’

Oracle Autonomous DB: 19c connection via wallet.

I tried with different version of JDK(8 and 11) and Hibernate(5.3.xx, 6.4.xx, 5.2.xx). Same error everytime.

Advertisement

Answer

The issue in my case was because of proxy setting. As I was connecting through Oracle’s OCI Autonomous Database Wallet. I tried setting proxy using System class. Something like below:

System.setProperty("https.proxyHost", "<proxy host>");
System.setProperty("https.proxyPort", "80");
System.setProperty("http.proxyHost", "<proxy host>");
System.setProperty("http.proxyPort", "80");

That didn’t work.

So, I used proxy directly on my wallet. I provided path of Wallet in my persistence.xml as shown:

        <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@db_high?TNS_ADMIN=Absolute path of DB Wallet"/>
        <property name="javax.persistence.jdbc.user" value="TEST"/>
        <property name="javax.persistence.jdbc.password" value="db123"/>

        <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect" />
        <property name="hibernate.temp.use_jdbc_metadata_defaults" value="false" />
        <property name="hibernate.jdbc.use_get_generated_keys" value="true" />
        <property name="hibernate.jdbc.use_scrollable_resultset" value="true" />
        <property name="spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults" value="false" />


        <property name="hibernate.jdbc.batch_size" value="1000" />
        <property name="hibernate.jdbc.batch_versioned_data" value="true" />
        <property name="hibernate.order_inserts" value="true" />
        <property name="hibernate.order_updates" value="true" />
        <property name="hibernate.cache.use_second_level_cache" value="false" />
        <property name="hibernate.connection.autocommit" value="false" />
        <property name="hibernate.show_sql" value="false" />
        <property name="hibernate.generate_statistics" value="false" />
        <property name="hibernate.use_sql_comments" value="false" /> 

As the alias is db_high here, so apply proxy as shown below in tnsnames.ora inside the WALLET_DB directory.

db_high = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=PROXY-URL)(https_proxy_port=PROXY_PORT)(protocol=tcps)(port=1522)(host=HOST))(connect_data=(service_name=SERVICE-HOST))(security=(ssl_server_cert_dn="CN=SOME-HOST, OU=Oracle BMCS US, O=Corporation, L=CITYNAME, ST=California, C=US")))

Please note the https_proxy and https_proxy_port here.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement