Wildfly 10 Infinispan TreeCache не работает
Я перехожу с Wildfly 8.2 на 10.1 К сожалению, у меня проблемы с Infinispan TreeCache.
Вот несколько вопросов:
- Пакетирование вызовов больше не поддерживается в конфигурации Wildfly 10
Вот мой конфиг:
<subsystem xmlns="urn:jboss:domain:infinispan:4.0"> ... <cache-container name="my_container" default-cache="my_tree_cache" jndi-name="java:jboss/my_container"> <transport lock-timeout="60000"/> <local-cache name="my_cache"/> <local-cache name="my_tree_cache" batching="true"/> </cache-container> </subsystem>
Ошибка при запуске:
> Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[345,17]
> Message: WFLYCTL0197: Unexpected attribute 'batching' encountered
- Если я уберу атрибут "пакетирования". Я получаю эту ошибку:
com.daiwacm.modjsf.dataaccess.DataException: getTreeCache has failed for jndi value (my_tree_cache) Caused by: org.infinispan.commons.CacheConfigurationException: invocationBatching is not enabled for cache 'my_tree_cache'. Make sure this is enabled by calling configurationBuilder.invocationBatching().enable()
- Если я установлю дозирование программно:
Context context = new InitialContext(); CacheContainer cacheContainer = (CacheContainer) context.lookup(jndiName); TreeCacheFactory tcf = new TreeCacheFactory(); Cache cache = cacheContainer.getCache(cacheName); cache.getCacheManager().defineConfiguration(cacheName, new ConfigurationBuilder().read(cache.getCacheConfiguration()).invocationBatching().enable().build()); TreeCache treeCache = tcf.createTreeCache(cache);
Я получаю эту ошибку:
> Caused by: org.infinispan.commons.CacheConfigurationException:
> ISPN000381: This configuration is not supported for simple cache
> at org.infinispan.configuration.cache.ConfigurationBuilder.validateSimpleCacheConfiguration(ConfigurationBuilder.java:219)
> ...
> at org.infinispan.configuration.cache.InvocationBatchingConfigurationBuilder.build(InvocationBatchingConfigurationBuilder.java:12)
> ...
1 ответ
Не устанавливайте конфигурацию программно; Я не уверен, что это правильный подход, несмотря на то, что он, похоже, работает.
Опция конфигурации, которую вы ищете
<local-cache name="my_cache">
<transaction transaction-mode="BATCH" />
</local-cache>
(пожалуйста, обратитесь к схеме в docs/schema/jboss-as-infinispan_4_0.xsd
если у вас есть какие-либо сомнения)
Последняя проблема заключается в том, что для локальных кэшей WF автоматически включает определенные оптимизации, когда это возможно. Когда вы переопределяете кеш программно, эта оптимизация (простой кеш) включается. Так что вам нужно установить
new ConfigurationBuilder().read(cache.getCacheConfiguration())
.simpleCache(false)
.invocationBatching().enable()