В моем проекте, мы используем infinispan в качестве кэш-памяти 2-го уровня в сочетании с Hibernate 4. Это запись из persistence.xmlКак очистить кэш Infinispan
<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:
CacheManager cm = new DefaultCacheManager();
Cache<Object, Object> c = cm.getCache();
c.clear();
Я добавил этот код в свой веб-проект.
Но я получаю исключение на первой линии, говоря Failed to define class org.infinispan.io.ExposedByteArrayOutputStream in Module "deployment.RuleEngineWS-ear.ear.RuleEditor-1.2.0-SNAPSHOT.war:main" from Service Module Loader: java.lang.LinkageError: Failed to link org/infinispan/io/ExposedByteArrayOutputStream (Module "deployment.RuleEngineWS-ear.ear.RuleEditor-1.2.0-SNAPSHOT.war:main" from Service Module Loader)
причиненный java.lang.NoClassDefFoundError: org/jboss/marshalling/ByteOutput
причиненном java.lang.ClassNotFoundException: org.jboss.marshalling.ByteOutput
Кэш сам работает нормально, я просто проблемы явно к нему доступ. Я думал, что я получу один и только CacheManager, если я вызову new DefaulCacheManager()
, но затем также используя этот интерфейс устарел.
Итак, если я полностью ошибаюсь, как я могу удалить свой кеш?
Infinispan 5.2.6
EDIT: Также я попробовал инъекции СМ, используя несколько попыток и особенно @Resource(lookup="java:jboss/infinispan/RuleEngineCache")
аннотацию. Но он не вводится, я использую EmbeddedCacheManager, как в примере quickstart, так и в устаревшем CacheManager.