On Mon, Jul 18, 2011 at 10:21 AM, alberto.zigoni
<alberto.zig...@gmail.com> wrote:
> Claus,
>
> I have tried it first, but there are a lot of ClassNotFoundError problems.
>
> Even though you find the least amount of jars to be copied to the tomcat 
> shared lib, there are problems when you e.g. call 
> exchange.getIn().getBody(MyApplicationClass.class).
>
> If the Camel core classes are loaded by a different classloader than the 
> application classes, the getBody returns null even if the body is not null 
> and is of the correct type (verified with the debugger).
>
> I am thinking about using RMI or something like that.
>

Are the java objects you store in the cache serializable?

You can also store the content in the cache in a canonical format such
as JSon, XML, binary using google protobuf, any other custom
serialization etc.

Alternatively this kind of issues is where OSGi excels. It allows
these kind of modularization. And a much higher class loader
flexibility.


> Alberto
>
>
> Il giorno 18/lug/2011, alle ore 10.10, Claus Ibsen-2 [via Camel] ha scritto:
>
>> Maybe just copy that camel-cache JAR into tomcat shared lib. And then
>> keep the other Camel JARs in your WARs.
>>
>>
>> On Mon, Jul 18, 2011 at 9:42 AM, alberto.zigoni
>> <[hidden email]> wrote:
>>
>> > 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.
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> FuseSource
>> Email: [hidden email]
>> Web: http://fusesource.com
>> Twitter: davsclaus, fusenews
>> Blog: http://davsclaus.blogspot.com/
>> Author of Camel in Action: http://www.manning.com/ibsen/
>>
>>
>> If you reply to this email, your message will be added to the discussion 
>> below:
>> http://camel.465427.n5.nabble.com/two-webapps-on-Tomcat-sharing-cache-through-Camel-tp4598504p4598564.html
>> To start a new topic under Camel - Users, email 
>> ml-node+465428-1832908794-4...@n5.nabble.com
>> To unsubscribe from Camel - Users, click here.
>
>
>
> --
> View this message in context: 
> http://camel.465427.n5.nabble.com/two-webapps-on-Tomcat-sharing-cache-through-Camel-tp4598504p4598591.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
FuseSource
Email: cib...@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.blogspot.com/
Author of Camel in Action: http://www.manning.com/ibsen/

Reply via email to