Мы хотели бы запустить наш EAR, который использует поиск в спящем режиме, в кластере HA с wildfly 10.1 и jgroups, использующими infinispan в качестве кеша для поиска в спящем и спящем режимах. Базовая конфигурация кластера, основанная на файле standalone-full-ha.xml (дополнительная информация ниже), работает, когда мы используем:
<property name="hibernate.search.default.directory_provider" value="ram"/>
для поставщика каталогов Hibernate Search. Но когда мы изменим это на:
<property name="hibernate.search.default.directory_provider" value="infinispan"/>
Получаем ошибки:
01:48:21,857 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 80) MSC000001: Failed to start service jboss.persistenceunit."mc.ear/web.war#mc": org.jboss.msc.service.StartException in service jboss.persistenceunit."mc.ear/web.war#mc": javax.persistence.PersistenceException: [PersistenceUnit: mc] Unable to build Hibernate SessionFactory
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:179)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:121)
at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:667)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:193)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: mc] Unable to build Hibernate SessionFactory
/* SNIP */
Caused by: org.hibernate.search.exception.SearchException: Unable to find directory provider implementation class: org.infinispan.hibernate.search.spi.InfinispanDirectoryProvider
Я знаю, что поставщик каталогов infinispan больше не распространяется с WildFly (в настоящее время используется 10.1.0-Final), но я не могу понять, как добавить его в качестве модуля и указать ссылку на него в моем файле jboss-deployment-structure.xml. Кажется, это не должно быть так сложно.
Я попытался посоветовать здесь отключить определение версии, но я не думаю, что это проблема: https://developer.jboss.org/thread/267716
На самом деле, я пробовал это некоторое время назад с WildFly 10.0, но также столкнулся с теми же проблемами: https://developer.jboss.org/thread/271789
Думаю, я не знаю, как включить поставщика каталогов infinispan в качестве пользовательского модуля. Нужно ли мне полностью заменять infinispan? Разве это не влияет на другие кеши в WildFly? Я хотел бы свести к минимуму изменения по сравнению со стандартом, но у меня действительно проблемы. Кто-нибудь успешно интегрировал InfinispanDirectoryProvider с Wildfly 10.1 и может дать здесь краткое описание? Дополнительные сведения ниже:
моя настойчивость.xml
<persistence
xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="mc">
<jta-data-source>java:/mcDS</jta-data-source>
<properties>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.id.new_generator_mappings" value="false"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="jboss.entity.manager.jndi.name" value="java:jboss/EntityManagers/mc"/>
<property name="jboss.entity.manager.factory.jndi.name" value="java:jboss/EntityManagerFactories/mc"/>
<property name="wildfly.jpa.hibernate.search.module" value="none" />
</properties>
</persistence-unit>
</persistence>
Я настроил другие соответствующие параметры непосредственно в файле standalone.xml:
<system-properties>
<property name="hibernate.search.default.worker.backend" value="jgroups"/>
<property name="hibernate.search.default.directory_provider" value="infinispan"/>
<property name="hibernate.search.default.exclusive_index_use" value="false"/>
<property name="hibernate.search.infinispan.chunk_size" value="300000000"/>
<property name="hibernate.search.reader.strategy" value="shared"/>
<property name="hibernate.search.lucene_version" value="LUCENE_CURRENT"/>
<property name="hibernate.search.worker.execution" value="async"/>
<property name="hibernate.search.infinispan.cachemanager_jndiname" value="java:jboss/infinispan/container/hibernateSearch"/>
</system-properties>