gpt4 book ai didi

java - 如何在 JBoss7.1 中使用 Infinispan 查询

转载 作者:行者123 更新时间:2023-12-01 08:11:46 28 4
gpt4 key购买 nike

我有一个通过 JBoss7.1 Web 界面创建的 Infinispan 缓存。它被配置为索引的分布式缓存。

在我的 jboss-deployment-struction.xml 文件中,我添加了对 org.infinispanorg.hibernate 的依赖项,因此我可以访问到我的缓存。我还添加了对以下内容的 Maven 依赖项:

  <dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-core</artifactId>
<version>5.1.7.Final</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-query</artifactId>
<version>5.1.7.Final</version>
</dependency>

5.1.7.Final是我正在使用的JBoss7.1.3中的org.infinispan模块中包含的版本。这会引入所有必要的依赖项(包括 lucene 和 hibernate-search-engine ),因此我的项目中确实有必要的库。但是,在执行提到的初始步骤时 here :

  SearchManager searchManager = Search.getSearchManager( cache );

它调用ComponentRegistryUtils.getComponent(cache, SearchFactoryIntegrator.class),但失败抛出IllegalArgumentException:

Indexing was not enabled on this cache. interface org.hibernate.search.spi.SearchFactoryIntegrator not found in registry

我的缓存已启用索引,如 cache.getCacheConfiguration().indexing().enabled() 返回 true 所示。但应用程序认为并非如此。也许这是因为缓存的 ComponentRegistry 无法访问 org.hibernate.search.spi.SearchFactoryIntegrator 类(缓存是 JBoss 全局组件,而 hibernate 搜索lib 位于我的 WAR 的 WEB-INF/lib 目录中)。

我应该有其他方法吗?

最佳答案

JBoss AS 7 包含一个 org.infinispan 模块,因为它由集群子系统内部使用,但该模块不包含 lucenehibernate-search -engine 依赖项。

通过在应用程序中指定这些依赖项,您可以(正确地)添加缺少的依赖项,但是包含的org.infinispan不会将扩展“视为”模块无法从应用程序的类路径加载扩展点。

因此,一个可能的解决方案是将这些依赖项添加到 AS7 模块并修补 org.infinispan 模块以从自定义模块导入这些资源。

另一种解决方案是不依赖 AS 包含的 org.infinispan 模块,而是将其全部包含在您的应用程序中。这样您就可以更灵活地使用不同的版本(可能是更新的版本)。

关于java - 如何在 JBoss7.1 中使用 Infinispan 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16701412/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com