繁体   English   中英

使用Infinispan和Wildfly配置休眠搜索

[英]Configuring Hibernate Search with Infinispan and Wildfly

我将Hibernate Search 5.5.5配置为在Wildfly 10上使用Infinispan 8.2.2。我仅在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" />

我有

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版本。

怎么了? :(

TLDR; 您的类路径中有2个Infinispan版本:一个在您的jboss-deployment-structure.xml ,一个在org.jboss.as.clustering子系统中。

自定义休眠搜索

<property name="wildfly.jpa.hibernate.search.module" value="none" />只是意味着不要为我的应用程序自动使用AND导出应用程序服务器“搜索”模块

因此, <module name="org.hibernate.search.orm" services="export" />是多余的,只要您为wildfly.jpa.hibernate.search.module输入正确的模块ID, wildfly.jpa.hibernate.search.module自动完成。 none或仅删除该属性以使用默认搜索模块。

none情况下,当您不想使用默认或自定义搜索模块,而是将其捆绑在应用程序中时,可以使用none选项。

更多详细信息WildFly 10文档-使用休眠搜索

自定义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随附的缓存基础结构,并使用您自己在应用程序中捆绑和配置的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM