Products | Versions |
---|---|
TIBCO BusinessEvents Enterprise Edition | - |
Not Applicable | - |
Resolution:
Description:
===========
BE Agents not able to connect/reconnect to Oracle database ("Error - Io exception: Connection reset" reported").
Environment:
===========
TIBCO BusinessEvents 5.0
Oracle 11 JDBC driver
Linux Environments
Symptoms:
=========
Error in logfile:
[jdbcstore.impl] Error - Io exception: Connection reset
Fatal [main] - [jdbcstore] JdbcStore initialization failed.
java.lang.Exception: Error while creating database connection
at com.tibco.be.jdbcstore.impl.DBConnectionPool.init(SourceFile:125)
at com.tibco.be.jdbcstore.impl.DBConnectionPoolManager.init(SourceFile:30)
at com.tibco.be.jdbcstore.impl.DBManager.init(SourceFile:233)
at com.tibco.be.jdbcstore.JdbcStore.a(SourceFile:526)
at com.tibco.be.jdbcstore.JdbcStore.<init>(SourceFile:220)
at com.tibco.cep.runtime.service.dao.impl.tibas.backingstore.BEDataGridJdbcStore.<init>(SourceFile:48)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.tibco.cep.runtime.service.dao.impl.tibas.ASDaoProvider.a(SourceFile:175)
at com.tibco.cep.runtime.service.dao.impl.tibas.ASDaoProvider.initHook(SourceFile:106)
at com.tibco.cep.runtime.service.om.impl.AbstractDaoProvider.init(AbstractDaoProvider.java:63)
at com.tibco.cep.runtime.service.cluster.MultiAgentCluster.init(MultiAgentCluster.java:108)
at com.tibco.cep.runtime.session.impl.RuleServiceProviderImpl.initCluster(RuleServiceProviderImpl.java:653)
at com.tibco.cep.runtime.session.impl.RuleServiceProviderImpl.configure(RuleServiceProviderImpl.java:252)
at com.tibco.cep.container.standalone.BEMain.jumpStart(SourceFile:136)
at com.tibco.cep.container.standalone.BEMain.main(SourceFile:59)
Cause:
======
Oracle JDBC driver problem
see:
https://forums.oracle.com/forums/thread.jspa?messageID=3793101
http://www.usn-it.de/index.php/2009/02/20/oracle-11g-jdbc-driver-hangs-blocked-by-devrandom-entropy-pool-empty/
Resolution:
========
Update property java.extended.properties in TRA files (be-engine.tra and TRA file of deployed application) and add the following parameter:
-Djava.security.egd=file:///dev/urandom
Oracle JDBC 11g seems to use /dev/random by default, which causes usually no trouble on clients running with console access by a user, because his/her unpredictable actions will keep the entropy pool well-fed. But to make it usable on a headless server with a latently empty entropy pool, you should do several things in descending security order (without warranty):
1). Involve an audio entroy daemon like AED to gather noise from your datacenter with an open microphone, maybe combine it with a webcam noise collector like VED. Other sources are talking about “Cryptographic Randomness from Air Turbulence in Disk devices“.
2). Use the Entropy Gathering Daemon to collect weaker entropy from randomness of userspace programs.
3). Talk your JDBC into using /dev/urandom instead:
-Djava.security.egd=file:///dev/urandom
See:
https://forums.oracle.com/forums/thread.jspa?messageID=3793101
http://www.usn-it.de/index.php/2009/02/20/oracle-11g-jdbc-driver-hangs-blocked-by-devrandom-entropy-pool-empty/
Resolution:
========
Update property java.extended.properties in TRA files (be-engine.tra and TRA file of deployed application) and add the following parameter:
-Djava.security.egd=file:///dev/urandom