Best way to use Infinispan on JBossAS6?
benze Oct 5, 2011 12:49 AMHi,
I'm running a Spring 3.0 war app on JBoss AS6.1, and want to add Infinispan as a Hibernate L2 cache. I understnad that JB6 ships with Infinispan 4.x as part of the bundle. Consequently, I'm wondering what the "right" way to use Infinispan in my app is.
Ideally, I would like to use IS 5.0.1, so can add the dependency into my pom.xml. I noticed that I had to exclude the jboss-transaction-api artifact from the infinispan dependency (Spring/Hibernate was complaining about not specifiying a TransactionManager or UserTransactionManager with the jboss- transaction-api included, and I figured it must have been a class loading clash with some Spring libs).
But now, I guess the next question is what is the right step. From the docs, I assume that I need to configure Infinispan as a standalone install (since I'm not using the JB6 packaged version), and therefore use org.hibernate.cache.infinispan.InfinispanRegionFactory as my hibernate.cache.region.factory_class (instead of the JNDI lookup class), but would like confirmation on that.
Is there anything else I need to do or be aware of? Is there a specific trick to configuring IS5 to use JB6's JGroups cluster channels to talk to other IS5 in the cluster while leaving JB to use IS4 to perform its own session/buddy clustering?
When I try to launch my app with the following settings in my persistence.xml, I get a ClassCastException.
persistence.xml:
{code}
<!-- Enable Infinispan L2 Cache -->
<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.cache.use_query_cache" value="true" />
<property name="hibernate.generate_statistics" value="true" />
<property name="hibernate.cache.region_prefix" value="infinispan" />
<property name="hibernate.cache.use_structured_entries" value="true" />
<property name="hibernate.cache.use_structured_entries" value="true" />
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.infinispan.InfinispanRegionFactory" />
<property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory"/>
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
<property name="hibernate.cache.infinispan.statistics" value="true" />
{code}
Error:
{code}
...
...
Caused by: com.sun.xml.bind.api.AccessorException: org.infinispan.config.ConfigurationException: Unable to instantiate cache loader or configuration
at com.sun.xml.bind.v2.runtime.reflect.AdaptedLister.addToPack(AdaptedLister.java:80) [:2.2]
at com.sun.xml.bind.v2.runtime.unmarshaller.Scope.add(Scope.java:117) [:2.2]
... 108 more
Caused by: org.infinispan.config.ConfigurationException: Unable to instantiate cache loader or configuration
at org.infinispan.loaders.CacheLoaderConfigAdapter.unmarshal(CacheLoaderConfig.java:66) [:4.2.0.FINAL]
at org.infinispan.loaders.CacheLoaderConfigAdapter.unmarshal(CacheLoaderConfig.java:49) [:4.2.0.FINAL]
at com.sun.xml.bind.v2.runtime.reflect.AdaptedLister.addToPack(AdaptedLister.java:78) [:2.2]
... 109 more
Caused by: java.lang.ClassCastException: org.infinispan.loaders.cluster.ClusterCacheLoader cannot be cast to org.infinispan.loaders.CacheLoader
at org.infinispan.loaders.CacheLoaderConfigAdapter.instantiateCacheLoaderConfig(CacheLoaderConfig.java:93) [:4.2.0.FINAL]
at org.infinispan.loaders.CacheLoaderConfigAdapter.unmarshal(CacheLoaderConfig.java:64) [:4.2.0.FINAL]
... 111 more
{code}
I have a jboss-classloading.xml file in my WEB-INF/ folder in my war (see my thread at http://community.jboss.org/message/630155), but I still get the idea that I am having a class loader clash issue.
Am I just asking for trouble using IS5 on JB6?
Thanks for any tips and insights!
Eric
Message was edited by: Eric B Added ClassCastException error