Wednesday, 22 June 2016

Oracle SOA DB Poller Error Caused by BINDING.JCA-11608

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:
  1. Make changes to the weblogic server data source / Connection factory.
  2. Which leads to a DB adaptor redeploy.
  3. 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:
  1. Retire all DB Pollers which have encountered this error.
  2. Activate all DB  Pollers.
  3. The issue will be fixed.

The Best Practice:
  1. Retire all DB Pollers. (No Polling will happen during this time).
  2. Make changes to the weblogic server data source / Connection factory.
  3. Which leads to a DB adaptor redeploy / Restart.
  4. Once the DB adaptor is redeployed / Restarted.
  5. Activate all DB Pollers.



Wednesday, 4 May 2016

SOA SUITE 12c Data Base Schema Dehydration Store States

Hi All,

As me, you might be stumbling to find out what, similar to List of all states from COMPOSITE_INSTANCE, CUBE_INSTANCE, DLV_MESSAGE  in 11g, the important tables would be for SOA Suite 12c and relevant states.

Basically this is described very well in the Oracle Support Document 2065869.1: 12c SOA composite <schema> States

For the benefit of every one, I have also copy pasted the content from the obove Oracle Note to here (copy right of the below details are with Oracle Support):

==========================================================================

Details

Based on 11g:
Tables COMPOSITE_INSTANCE and MEDIATOR_INSTANCE does not apply to 12c.
Tables CUBE_INSTANCE, DLV_MESSAGE and DLV_TYPE did not have any change.
The FLOW_INSTANCE is available only in 12c.

CUBE_INSTANCE States

StateDescription
0 STATE_INITIATED
1 STATE_OPEN_RUNNING
2 STATE_OPEN_SUSPENDED
3 STATE_OPEN_FAULTED
4 STATE_CLOSED_PENDING_CANCEL
5 STATE_CLOSED_COMPLETED
6 STATE_CLOSED_FAULTED
7 STATE_CLOSED_CANCELLED
8 STATE_CLOSED_ABORTED
9 STATE_CLOSED_STALE
10 STATE_CLOSED_ROLLED_BACK


DLV_MESSAGE States

StateDescription
0 STATE_UNRESOLVED
1 STATE_RESOLVED
2 STATE_HANDLED
3 STATE_CANCELLED
4 STATE_MAX_RECOVERED


DLV_TYPE States

StateDescription
1 Invoke Message
2 DLV Message
MEDIATOR States

Mediator state is now derived from SCA_ASYNC_CPNT_STATE table. The state column can take one of the following values:
StateDescription
1 RUNNING
2 COMPLETED
3 FAULTED
4 ABORTED
5 STALE


FLOW_INSTANCE States
StateDescription
-1 NOT_SET
1 SUSPENDED
2 TERMINATED
3 STALE
  
The Flow State is derived from the Flow Instance table using the following columns:
  • Active_Component_Instances
  • Unhandled_Faults
  • Recoverable_Faults
  • Admin_State
Completed Flow  
0 Active_Component_Instances

Completed Faulted Flow
0 Active_Component_Instances
1 or more Unhandled_Faults

Recoverable Flows
1 or more Active_Component_Instances
1 or more Recoverable_Faults

Completed Successfully
0 Active_Component_Instances
0 Unhandled_Faults
0 Recoverable_Faults
  
======================================================================

Further to the above Info, I also found a very useful blog that provides more knowledge / usage to the above table. 


Hope this was helpful to you.
 

Wednesday, 21 January 2015

Understanding Cloud - Difference between On Premises, IaaS, PaaS and SaaS

Hi All,

Understanding Cloud - Difference between On Premises, IaaS, PaaS and SaaS  in a much simpler and funny way.

I recently saw this table and I thought some body has gone a long way to simplifying a lot of the techie talk about cloud and its various forms.


I thought this would be great to share it with you all.




 

Copy Right: No way I take credit for the creation of the below table. The creator of this table owns the copy right. Happy to remove if need be.

Monday, 17 November 2014

BPM Auditing Demystified

Very Informative Blog Written by A-TEAM - Mark Foster. This blog is about Audit Level for BPM and its effect on Audit ability and Performance.


BPM Auditing Demystified

Enjoy the reading.

Recomendation: Which JDK best suites SUN Java or JRockit

I have always come across this dialama, which JDK between SUN Java (Hotspot) and JRockit  to use when we are installing Oracle Integration Products, i.e, SOA BPEL, BPM, BAM etc.

Here are some of my findings and recomendations:

First we will need to understand What is the difference between the Sun JVM and JRockit JVM?
 
The most well know JVM is the implementation from Sun. The Sun JVM is called HotSpot. The Sun JVM is shipped in the Java Developer's Kit (JDK) and Java Runtime Environment (JRE) from Sun.

The JRockit JVM from is optimized for reliability and performance for server side applications. To achieve this, JRockit JVM uses technologies such as code generation, hot spot detection, code optimization, advanced garbage.

To know more about the differences or futures of JRockit refer Oracle JRockit Frequently Asked Questions
 
Also as JRockit has been the propitiatoryJDK for BEA, I would use JRockit in Production or similar environment.

For developer environment I believe we should be OK to use either or. If you plan to debug or examine your code with Java Mission Control or want extended futures from Flight recorder than undoubtedly JRockit is your JDK.

If you have more to add please comment below.

Chaw.

Thursday, 3 July 2014

Setting Persistence or other Transport Headers for MQ Transport in OSB (Oracle Service Bus)

Setting Persistence For MQ Transport in OSB



This blog applies to Oracle Service Bus only.

Have you been trying to make your MQ messages persist on the MQ server. Than you have landed in the right blog. Follow the steps below to set up MQ Transport to persist the MQ messages on the MQ server.

If you were familiar with weblogic JMS messaging, it is very easy to make a JMS message persist on the weblogic JMS server using OSB as the producer. You can do this by checking the Persistence check box in the business service. But it is not the case if you would want to perform the same  for an MQ message on MQ server using OSB MQ transport.

Steps to make your MQ message persist on MQ server using OSB MQ transport:

Assumption: 
a. You are using publish action to publish your MQ messages.
b. The below steps are performed on the OSB console.

1. Open your Proxy or Local Proxy Service
2. Navigate and Edit the Stage where Publish action exist.


3. Navigate to the Request action of Publish
4. Right Click --> Add an Action --> Communication -->  Transport Headers.


5.  Set "SET TRANSPORT HEADERS for" to "Outbound Request" and Click "Add Header"

6. Click drop down for "SOAPAction" and select Persistence.

7. Click Expression and set the value to be set.  

Note: you can repeat steps 5 to 7 to set various other MQ transport headers values. For the entire list of MQ transport headers and their description please visit the blow mentioned Oracle Document:

Document: Oracle® Fusion Middleware Developer's Guide for Oracle Service Bus
11g Release 1 (11.1.1.4.0)

Sunday, 16 June 2013

How to Create XSD and WSDL from Scratch using Jdeveloper.

I wanted to find out if there was already documentation on "How to Create XSD and WSDL from Scratch using Jdeveloper".

And guess what, found one at FUSION Blog : Creating a WSDL File From XSD File

Great Article and the author has illustrated the steps clearly and Thoroughly.

Thanks to the Author.

Happy Coding. :)