簡體   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