In previous post, we saw how to configure coherence adapter. In this post, we see how and where we can use this coherence adapter.
We have different operation in coherence adapter, Put operation is used to put the data to coherence cache and get operation used to get data from coherence cache.In this post, we see how to use this coherence adapter in real world.
We have created one database table (StudentInfo), we read the data (student information) from that table based on the Id (Student Id) which is primary key in the table. We use coherence adapter to get and put the data to cache. First we check whether the data is there in coherence cache, if data is there then we directly get the data from cache instead of database and if data is not there then we query the data from database and then put the data to coherence cache so that next time when same request come, we get the data from cache instead of making a database call. This has positive impact on performance.
Let’s start with the use case.
Create one SOA project and add one BPEL to it.
First configure the db adapter which read the data from database. Provide DB JNDI name. Click here to see how to create Java derby database data source. Choose DB connection and choose “Select” operation.
Select “StudentInfo” table and add selection criteria.
Now drag coherence adapter and choose “Put” operation. Click here to see how to configure coherence adapter for Put operation.
Drag another coherence adapter and choose “Get” operation. Click here to see how to configure coherence adapter for Get operation.
Now composite should look like below.
Now open the BPEL and add three invokes to it, connect first invoke to queryCoherence adapter, second to “putDataToCoherence” adapter and third to DB adapter.
Now add one switch case after first coherence adapter which check whether the data exist in cache or not.
Now we set the coherence cache key at run time. First create a string variable and before query coherence cache assign value to that variable.
Now go to coherence adapter invoke and go to Properties tab and select “jca.coherence.key”. Assign above created variable to it.
Do it same for put data to coherence adapter invoke.
Your BPEL should look like below.
Deploy your composite and test it.
When we test this composite, it will get the data from database.
When we test it again with same request then it take the data from cache instead of database.
Download sample code from here.