Skip to main content

This content has been archived and is no longer being updated. Links may not function; however, this content may be relevant to outdated versions of the product.

Support Article

Cannot create PoolableConnectionFactory after Java minor update

SA-37785

Summary



User upgraded Java from jdk 1.7.0_111-64 to 1.7.0.131-64.

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(T4CConnection.java:467)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.validateConnectionFactory(BasicDataSource.java:1556)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545)

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:
https://pdn.pega.com/support-articles/sqlrecoverableexception-installing-pega-72-oracleunix

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

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


Resolution



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

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

Or

Set system property -Djava.security.egd=file:///dev/urandom

Published June 5, 2017 - Updated October 8, 2020

Was this useful?

0% found this useful

Have a question? Get answers now.

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

Did you find this content helpful?

Want to help us improve this content?

We'd prefer it if you saw us at our best.

Pega Community has detected you are using a browser which may prevent you from experiencing the site as intended. To improve your experience, please update your browser.

Close Deprecation Notice
Contact us