Java 如何清除Infinispan缓存

Java 如何清除Infinispan缓存,java,hibernate,caching,jboss,infinispan,Java,Hibernate,Caching,Jboss,Infinispan,在我的项目中,我们结合Hibernate4使用infinispan作为二级缓存。这是persistence.xml中的条目 <jta-data-source>java:jboss/datasources/RuleEngine</jta-data-source> <shared-cache-mode>ALL</shared-cache-mode> <properties> <property name

在我的项目中,我们结合Hibernate4使用infinispan作为二级缓存。这是persistence.xml中的条目

<jta-data-source>java:jboss/datasources/RuleEngine</jta-data-source>        
  <shared-cache-mode>ALL</shared-cache-mode>
  <properties>
    <property name="hibernate.show_sql" value="false" />
    <property name="hibernate.dialect" value="org.hibernate.dialect.DB2390Dialect"/>
    <property name="hibernate.cache.use_second_level_cache" value="true" />
    <property name="hibernate.cache.use_query_cache" value="true"/>
    <property name="hibernate.cache.infinispan.cachemanager" value="java:jboss/infinispan/RuleEngineCache"/>
    <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.infinispan.JndiInfinispanRegionFactory"/>
  </properties>

java:jboss/datasources/RuleEngine
全部的

我想做的是在点击GUI上的按钮时清除缓存。java代码是:

CacheManager cm = new DefaultCacheManager();
Cache<Object, Object> c = cm.getCache();
c.clear();
CacheManager cm=newdefaultcachemanager();
Cache c=cm.getCache();
c、 清除();
我将此代码添加到我的web项目中

但是我在第一行得到一个异常,它说
未能在服务模块加载器中的模块“deployment.RuleEngineWS ear.ear.RuleEditor-1.2.0-SNAPSHOT.war:main”中定义类org.infinispan.io.ExposedByteArrayOutputStream(模块)错误:未能链接org/infinispan/io/ExposedByteArrayOutputStream服务模块加载器中的“deployment.RuleEngineWS ear.ear.RuleEditor-1.2.0-SNAPSHOT.war:main”

由于
java.lang.NoClassDefFoundError:org/jboss/marshalling/ByteOutput

java.lang.ClassNotFoundException:org.jboss.marshalling.ByteOutput引起

缓存本身工作正常,只是显式访问它时遇到问题。我认为如果调用
new DefaulCacheManager()
,我将获得唯一的CacheManager,但也不推荐使用此接口

因此,如果我完全走错了路,那么如何删除缓存呢

Infinispan 5.2.6

编辑:
我还尝试了几次注入CM,特别是
@Resource(lookup=“java:jboss/infinispan/RuleEngineCache”)
注释。但它不是注入的,无论我使用quickstart示例中的EmbeddedCacheManager还是不推荐使用的CacheManager。

如果要清除Hibernate的二级缓存,无论缓存提供程序是什么,都应该直接调用Hibernate。调用
SessionFactory.getCache().ReceiveAllRegions
应该这样做,而不必用Infinispan弄脏你的手