I have defined a Camel context with a route creating and populating a cache.
This camel context is included into a web application deployed on Tomcat.
The route creating and populating the cache is fired at startup using a Quartz
endpoint. Everything works fine.
Now I want to query that cache from another web application deployed to the
same Tomcat server (i.e. same JVM for the two webapps), using a dedicated Camel
route.
The problem is that the CacheManager instantiated by Camel is a singleton
within the scope of the classloader and, since Servlet API reverses the
standard classloading hierarchy, the two webapps each create their own
CacheManager, so they cannot share the cache.
I am using Camel 2.6.0.
I have found an ugly workaround, which is to delete all the jars from the
WEB-INF/lib directories and copy them into Tomcat lib directory.
Another workaround that I am trying is to query the cache through a vm:
endpoint from one Camel context to the other, like this:
Context A:
from("wherever").to("vm:queryCache")
Context B:
from("vm:queryCache").to("cache://myCache")
Can you suggest other ways of having the webapps sharing the cache?
Is it possible to override Ehcache configuration with camel 2.6.0?
Thanks
Alberto
--
View this message in context:
http://camel.465427.n5.nabble.com/two-webapps-on-Tomcat-sharing-cache-through-Camel-tp4598504p4598504.html
Sent from the Camel - Users mailing list archive at Nabble.com.