[infinispan-dev] [jboss-as7-dev] AS7-4007 missing Infinispan dependency for clustered JPA second level cache

Galder Zamarreño galder at redhat.com
Tue Mar 6 14:19:08 EST 2012


On Mar 6, 2012, at 8:06 PM, David M. Lloyd wrote:

> On 03/06/2012 01:02 PM, Galder Zamarreño wrote:
>> On Mar 6, 2012, at 6:31 PM, Paul Ferraro wrote:
>> </snip>
>>> To work around this, we typically store MarshalledValues in the cache - which are marshalled/unmarshalled using a marshalling configuration specific to the application (e.g. via a ModularClassResolver using the ModuleLoader of the deployment unit).
>>> https://github.com/jbossas/jboss-as/blob/master/clustering/api/src/main/java/org/jboss/as/clustering/MarshalledValue.java
>>> https://github.com/jbossas/jboss-as/blob/master/clustering/api/src/main/java/org/jboss/as/clustering/SimpleMarshalledValue.java
>>> https://github.com/jbossas/jboss-as/blob/master/clustering/api/src/main/java/org/jboss/as/clustering/HashableMarshalledValue.java
>> 
>> Isn't a class resolver and a class loader, functionality wise, doing the same thing? I wonder if a custom classloader could not be built that delegates to a ModularClassResolver...
> 
> No, not really.  A class loader loads a class, given a name.  But a 
> class resolver loads a class given a name *and* stream information.  The 
> modular class resolver reads the stream information to know which class 
> loader houses the class in question.  This is critically important 
> because it's possible (common even) for more than one class to exist in 
> an AS instance with the same name.  And there is no single class loader 
> which has visibility to all classes which could potentially be stored in 
> a cache.
> 
> Yes, accepting a class loader to use is a powerful feature.  However it 
> *should* just be a convenience abstraction over a more fundamental 
> feature which allows a class resolver to be set.

Thanks for the clarification, makes sense.

So, if I understand this correctly, Infinispan should really be enhanced to accept global and per-cache class resolvers, or more globally, as paul suggested below, marshalling configuration instances (or abstractions of them).

I think https://issues.jboss.org/browse/ISPN-1367 should be reporpoused to do this.

> 
>>> So, essentially Infinispan itself only ever has to marshal/unmarshal a byte[] wrapper - so the AS has full control over the marshalling process.
>>> 
>>> I would recommend that the 2LC do something similar, and include a mechanism for providing a MarshallingConfiguration per persistence unit.
>> 
>> Possibly…
>> 
>> --
>> Galder Zamarreño
>> Sr. Software Engineer
>> Infinispan, JBoss Cache
>> 
> 
> 
> -- 
> - DML
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev

--
Galder Zamarreño
Sr. Software Engineer
Infinispan, JBoss Cache




More information about the infinispan-dev mailing list