Result set caching allows Oracle Service Bus to return a cached version of a service response based on particular elements for a request message. That is, if the same request is passed in, the cached response will be returned in milliseconds, assuming that the TTL (Time to Live) has not expired. If the entry is not in the cache, the downstream business service will be called and its result set placed in the cache automatically. Coherence is the technology that provides this caching solution.
Coherence caches can be in-process or out-of-process. An in-process cache shares the heap with the managed server, which in this case is Oracle Service Bus. An out-of-process cache will reside in separate JVM’s that have to be started prior to running Oracle Service Bus.
With Oracle SOA Suite 11g, the Coherence result set caching had to be configured manually regardless. With Oracle SOA Suite 12c the result set caching comes out of the box, using an in-process scheme.
When asked when to use an in-process or out-of-process cache, it tends to boil down to how many cache entries do you expect and how much heap might you have to add?
Generally, I want to keep the Oracle Service Bus managed server heap to ~8Gb. If you anticipate having to keep growing the heap size of your managed server to accommodate the cache entries, it is better to maintain an out-of-process cache. It is much easier to maintain a separate set of JVM’s than to add heap to the managed server, or add another managed server to the cluster just to maintain the cache.
So one rule of thumb may be, if the cache size < 1Gb, then in-process should suffice, greater than that, use the out-of-process.