I need to write some service code which may be integrated into a web service and also may be integrated into a Java Desktop app.
I want the call logic to get the objects it needs from a in-memory cache layer consisting of (I think), two caches:
1) a read-through cache backed by an Oracle database (possibly with Continuous Query Notification) 2) a read-through / write-through cache backed by some kind of light-weight local store.
I want the application to get data from the 1st cache and use the 2nd cache as a backup. So, anything read from the 1st cache must be written to the 2nd one.
The reason for the two caches is that I want the cache to survive a restart during which the Oracle database may not be available. If there is a way to do that in a single cache, even better.
I want the whole thing to be as tightly-packaged as possible -- so it can be used by various Java applications (desktop, web, etc) without caring about the execution environment.
I am thinking along the lines of Apache Ignite, possibly with Cassandra as the backing database for the backup cache? But I don't know much about either of them. I think Apache Ignite has an "embedded mode" that would make it kind of "light-weight" like I am looking for (e.g., I don't want a separate cluster/node that has to be started for the service to work.)
I appreciate any and all suggestions!