Hi All,
Just wanted to highlight a common mistake most developer and most testing teams do. When a need arises to change any setting including connection factory or connection pool setting in Oracle Weblogic Server
The Mistake:
- Make changes to the weblogic server data source / Connection factory.
- Which leads to a DB adaptor redeploy.
- Once the DB adaptor is redeployed all the pollers using that DB adaptor incidences will fail with the following error:
Query
name: [xxxxxxxxxxxxxx], Descriptor name:
[xxxxxxxxxxxxx.xxxxxxx]. Polling the database for events
failed on this iteration.
Caused
by BINDING.JCA-11608
Connection Already Closed Exception.
This
[javax.resource.cci.Connection] is already closed.
This
should not happen when running within a packaged application like BPEL or ESB
but may occur when the adapter is used standalone.
..
.
This exception is considered not retriable, likely due to a modelling
mistake. This polling process will shut down, unless the fault is related
to processing a particular row, in which case polling will continue but the row
will be rejected (faulted).
at
oracle.tip.adapter.db.exceptions.DBResourceException.createNonRetriableException(DBResourceException.java:690)
at oracle.tip.adapter.db.exceptions.DBResourceException.createEISException(DBResourceException.java:656)
at
oracle.tip.adapter.db.exceptions.DBResourceException.inboundReadException(DBResourceException.java:491)
at oracle.tip.adapter.db.InboundWork.handleException(InboundWork.java:1001)
at oracle.tip.adapter.db.InboundWork.runOnce(InboundWork.java:896)
at oracle.tip.adapter.db.InboundWork.run(InboundWork.java:627)
at
oracle.tip.adapter.db.inbound.InboundWorkWrapper.run(InboundWorkWrapper.java:43)
at oracle.integration.platform.blocks.executor.WorkManagerExecutor$1.run(WorkManagerExecutor.java:184)
at
weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:184)
at weblogic.work.DaemonWorkThread.run(DaemonWorkThread.java:30)
Caused
by: BINDING.JCA-11608
Connection
Already Closed Exception.
This
[javax.resource.cci.Connection] is already closed.
Note: When the above error occurs, the Poller state is still active, which deadly in a production environment.
The Corrective Measure:
- Retire all DB Pollers which have encountered this error.
- Activate all DB Pollers.
- The issue will be fixed.
The Best Practice:
- Retire all DB Pollers. (No Polling will happen during this time).
- Make changes to the weblogic server data source / Connection factory.
- Which leads to a DB adaptor redeploy / Restart.
- Once the DB adaptor is redeployed / Restarted.
- Activate all DB Pollers.