On 3/6/12 9:28 AM, David M. Lloyd wrote:
On 03/06/2012 09:21 AM, Galder Zamarreño wrote:
> This reminds me that we had a discussion about this a few months back:
http://goo.gl/DJLhB
>
> At the time, it wasn't clear whether you can use ModularClassResolver in a
non-module env. Seems like it's not possible.
>
> So, one option is to have a class resolver lookup class, or similar so that AS7 can
pass us the right ClassResolver.
>
> There might a quicker option here though:
> - Extend VersionAwareMarshaller (
http://goo.gl/bu8CF) and provide a variant of
JBossMarshaller (
http://goo.gl/o9Ro3) in Infinispan (this requires JBossMarshaller to be
made non-final)
> - Override JBossMarshaller.inject(), call super.inject() and then call
baseCfg.setClassResolver(…)
> - This would require that the VersionAwareMarshaller extension be passed the
ModuleLoader that ModularClassResolver requires.
> - Configure Infinispan with this new marshaller, via SerializationConfiguration.
Thankfully you can now pass an instance of the marshaller to it, so no need to do any
magic ModuleLoader lookup from the VersionAwareMarshaller extension.
>
> Scott, other than the change in JBossMarshaller to be made non-final, the rest can
built on AS7. Wanna have a go? Ping me on IRC if you need help.
>
> Cheers,
>
> p.s. Silly question, how come this issue is not present in HTTP session replication
use case or EJB3 SFSB?
It actually is present anywhere we're using Infinispan (I think). It
just hasn't blown up yet anywhere public (in this case it's a 90%
effective solution versus a 100% effective solution).
Session replication does setup a custom marshaller, so it does in fact
work. I think the issue is just that the hibernate-infinispan, which is
part of the hibernate project set, and not AS code does not do this, and
it doesn't expose a way to do it.
--
Jason T. Greene
JBoss AS Lead / EAP Platform Architect
JBoss, a division of Red Hat