【发布时间】:2016-11-19 01:01:36
【问题描述】:
我们想在一个 HA 集群中运行使用休眠搜索的 EAR,该集群具有 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 集成并可以在此处提供简要说明?更多详情如下:
我的persistence.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>
【问题讨论】:
标签: hibernate jboss hibernate-search infinispan wildfly-10