Support Article

Cannot create PoolableConnectionFactory after Java minor update



User upgraded Java from jdk 1.7.0_111-64 to

After updating Java minor versions, getting errors on startup of instances trying to connect to the Oracle database.

Note that system is running on Unix.

Error Messages

Caused by: java.sql.SQLRecoverableException: IO Error: Connection reset
at oracle.jdbc.driver.T4CConnection.logon(
at oracle.jdbc.driver.PhysicalConnection.<init>(
at oracle.jdbc.driver.T4CConnection.<init>(
at oracle.jdbc.driver.T4CDriverExtension.getConnection(
at oracle.jdbc.driver.OracleDriver.connect(
at org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(
at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory(
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(

Steps to Reproduce

Upgrade to Java to jdk1.7.0_131-64.

Root Cause

A defect or configuration issue in the operating environment.

When running in a Unix environment connections to an Oracle database using newer versions of the Oracle JDBC driver need to use /dev/urandom and not /dev/random.

If /dev/random is used the connection to the Oracle database will take longer and can result in the connection timing out.

This article provides more details on why urandom is needed:

In the new Java version the securerandom.source property is not specified correctly in the $JAVA_HOME/jre/lib/security/ file.

As a result the default /dev/random is being used.


Make the following change to the operating environment to force the Oracle JDBC driver to use urandom:

Update $JAVA_HOME/jre/lib/security/ to use securerandom.source=file:/dev/./urandom


Set system property

Published May 10, 2017 - Updated June 5, 2017

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.