在Infinispan和Wildfly中配置Hibernate Search

8
我将配置Hibernate Search 5.5.5以使用Infinispan 8.2.2在Wildfly 10上运行。我只配置了Wildfly中的Infinispan模块,没有配置Hibernate Search模块。
在persistence.xml文件中,我添加了以下配置:
<property name="hibernate.search.infinispan.cachemanager_jndiname" value="java:jboss/infinispan/container/hibernateSearch" />
<property name="wildfly.jpa.hibernate.search.module" value="none" />

这似乎是使用了Infinispan,但并没有持久化索引。
所有缓存都按以下方式在domain.xml中配置:
<cache-container name="hibernateSearch" default-cache="LuceneIndexesData" jndi-name="java:jboss/infinispan/hibernateSearch" statistics-enabled="false">
      <replicated-cache name="LuceneIndexesMetadata" mode="ASYNC">
          <file-store fetch-state="false" passivation="false" preload="false" purge="false" shared="false" singleton="false"/>
      </replicated-cache>
      <replicated-cache name="LuceneIndexesLocking" mode="SYNC">
           <file-store fetch-state="false" passivation="false" preload="false" purge="false" shared="false" singleton="false"/>
      </replicated-cache>
      <replicated-cache name="LuceneIndexesData" mode="ASYNC">
           <file-store fetch-state="false" passivation="false" preload="false" purge="false" shared="false" singleton="false"/>
      </replicated-cache>
 </cache-container>

在 jboss-deployment-structure.xml 中:

<module name="org.infinispan" slot="ispn-8.2"/>
<module name="org.hibernate.search.orm" services="export" />

当我尝试对所有内容进行索引时,我收到了以下错误信息:
UNHANDLED_EXCEPTION: java.lang.IllegalArgumentException: java.lang.Object is not an indexed entity or a subclass of an indexed entity

但是如果我删除这行代码:

<property name="wildfly.jpa.hibernate.search.module" value="none" />

I got

org.hibernate.search.exception.SearchException: Wrong configuration of directory provider: class org.infinispan.hibernate.search.spi.InfinispanDirectoryProvider does not implement interface org.hibernate.search.store.DirectoryProvider

问题似乎与此处描述的相同:https://developer.jboss.org/thread/271789。但是我没有找到任何可行的解决方案,并且我确定我的类路径中没有一个或多个Infinispan或Hibernate版本。出了什么问题?:(
1个回答

2
TLDR; 在您的类路径中有2个Infinispan版本:一个在您的 jboss-deployment-structure.xml 中,另一个来自 org.jboss.as.clustering 子系统。
自定义Hibernate搜索 <property name="wildfly.jpa.hibernate.search.module" value="none" /> 的意思是不要自动使用并导出应用程序服务器的 "search" 模块。因此,<module name="org.hibernate.search.orm" services="export" /> 是多余的。只要将正确的模块ID放入 wildfly.jpa.hibernate.search.module 中,而不是 none,或者删除该属性以使用默认搜索模块,它就会自动完成。当您不想使用默认或自定义搜索模块但要将其捆绑在应用程序中时,可以使用 none 选项。
更多细节请参阅WildFly 10 文档 - 使用 Hibernate Search

自定义 WildFly Infinispan 子系统

<module name="org.infinispan" slot="ispn-8.2"/>并不能升级 WildFly Infinispan 子系统。它只允许您的应用程序直接使用 Infinispan 作为库。正确的方法是:

  • 简单:升级到 Wildfly 10.1(默认情况下它带有 Infinispan 8.2 和 Hibernate Search 5.5)
  • 困难:升级或修改 org.jboss.as.clustering.infinispan 模块以使用自定义的 Infinispan 版本
  • 荒谬:放弃 WildFly 提供的缓存基础设施,使用自己在应用程序内部打包和配置的缓存

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接