代码之家  ›  专栏  ›  技术社区  ›  Davide Cerbo

使用Infinispan和Wildfly配置Hibernate搜索

  •  8
  • Davide Cerbo  · 技术社区  · 6 年前

    我正在将Hibernate Search 5.5.5配置为在Wildfly 10上使用Infinispan 8.2.2。 我在Wildfly中只配置了Infinispan模块,没有配置Hibernate搜索模块。

    在持久性内部。xml我放置此配置:

    <property name="hibernate.search.infinispan.cachemanager_jndiname" value="java:jboss/infinispan/container/hibernateSearch" />
    <property name="wildfly.jpa.hibernate.search.module" value="none" />
    

    这是因为似乎使用了Infinispan,但没有保持索引。

    所有缓存都在域中配置。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部署结构中。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版本。

    怎么了?(

    1 回复  |  直到 6 年前
        1
  •  2
  •   Tair    6 年前

    太长,读不下去了在类路径中有两个Infinispan版本:一个在 jboss-deployment-structure.xml 还有一个 org.jboss.as.clustering 子系统。

    自定义休眠搜索

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

    因此 <module name="org.hibernate.search.orm" services="export" /> 是冗余的,一旦您为 wildfly.jpa.hibernate.search.module 而不是 none 或者只需删除属性即可使用默认搜索模块。

    这个 没有一个 当您不想使用默认或自定义搜索模块,而是将其捆绑在应用程序中时,可以使用此选项。

    更多详细信息 WildFly 10 Docs - Using 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提供的缓存基础设施,并在应用程序中使用您自己的捆绑和配置