问题标签 [infinispan-9]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
821 浏览

docker - Infinispan 复制缓存的多个客户端可以共享同一个持久文件存储吗?

交叉发布在https://developer.jboss.org/thread/279735

假设我们有多个 docker 容器(每个都有 java webapps,所以本质上是多个 JVM),每个容器都使用相同的复制 Infinispan 缓存:

  • 使用 jgroups 进行发现的嵌入式模式
  • 服务器模式使用 Docker Hub 作为 Infinispan 服务器,客户端通过 hotrod 连接。

在任何一种情况下,所有缓存成员/客户端都有一个文件存储,它们在启动时从中预加载(示例适用于服务器模式,类似于嵌入式模式的 xml):

通过 docker compose,每个容器的文件存储中的路径(比如说 /var/tmp/server/OUR_CACHE.dat)绑定安装到 docker 主机上的同一个文件。

我的问题是 - 是否设计了持久性机制,以便多个复制的缓存客户端可以读取/写入同一个文件存储/从同一个文件存储中读取/写入而不会出现任何错误?

我的理解是,在复制模式下,键值最终将在所有节点的内存中变得一致。但我的目标是确保多个客户端容器使用相同的文件存储进行持久性和预加载不会对这种复制产生不利影响。

如果不建议共享相同的文件存储 .dat 文件,那么在 .xml 文件中的每个容器路径的文件路径中具有 GUID 的最佳做法是什么。每个 docker 容器的主机名(即 containerId)都是唯一的,但在部署之前不会知道它,因此使用“path”的值静态填充 infinispan_server.xml 文件并不容易。

谢谢,

_Prateek

0 投票
1 回答
165 浏览

jboss - 配置为 JCache 时如何从 Infinispan 缓存中获取高级缓存或配置事务管理器?

我有一个 JCache 缓存,我的缓存提供程序是 Infinispan。我需要将它用作事务缓存。在 Infinispan 中,如果我们配置事务管理器,我可以将其获取为 cache.getAdvancedCache().getTransactionManager()。

由于我的缓存是 JCache,我看不到执行此操作的选项,即;从缓存中获取事务管理器。有什么办法可以做到这一点?

根据 infinispan 文档,它完全符合 JSR-107: https ://infinispan.org/docs/stable/user_guide/user_guide.html#jcache_jsr_107

0 投票
1 回答
113 浏览

keycloak - infinispan 域配置示例

我正在尝试使用域模式部署一个 infinisppan 集群(2 台机器)。但我找不到 domain.xml 和 host.xml 配置文件的任何工作示例。

这个集群将被 keycloak 用作缓存服务器

你们中的任何一个幸运的人已经在这方面工作了吗?

0 投票
1 回答
382 浏览

infinispan - Wildfly 14 中带有 Infinispan 的 JCache 为带有限定符 @Default 的 InfinispanExtensionEmbedded 类型生成不满足的依赖项

我正在按照一些指南使用作为提供程序 Infinispan 在 Wildfly 14 环境中设置 JCache。

我遵循了这些步骤: - 我从 Infinispan 网站下载了 Wildfly 模块版本 9.4.14 - 我在 Wildfly 的模块目录中复制了 zip 的内容 - 我将文件 jboss-deployment-structure.xml 添加到我的应用程序中 - 我添加了拦截器到我的应用程序上的 beans.xml 文件 - 我将注释 @CacheResult 添加到函数 - 我启动 Wildfly 并收到以下错误 org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type InfinispanExtensionEmbedded在注入点使用限定符 @Default [BackedAnnotatedField] @Inject private org.infinispan.cdi.embedded.AdvancedCacheProducer.infinispanExtension

我添加了可能有用的信息。我在 wildfly 上部署的应用程序是一只耳朵蚂蚁,这是我正在使用的结构:

  • 耳朵文件
    • 元信息
    • JAR 库文件
    • 元信息
      • bean.xml 文件
      • jboss-部署-结构.xml
    • WAR文件

jboss-deployment-structure.xml :

豆类.xml:

使用此标准配置,我希望在 beans.xml 中定义的拦截器开始起作用,因此我可以在应用程序中使用默认缓存容器

0 投票
1 回答
137 浏览

infinispan-9 - Infinispan 服务器:如何使用它

我开始研究 infinispan 和 infinispan 客户端/服务器模式。我专注于服务器模式。我使用版本 9.4.15。我成功地以集群模式启动到服务器,使用以下命令:

我添加了一个管理员用户,所以我可以使用 http://127.0.0.1:9990http://127.0.0.1:10990访问我的 2 个服务器 Web IHM

服务器看到它们,我认为它们在同一个集群中。

服务器配置(默认)在名为“clustered”的 CacheContainer 中有 2 个名为“Dist”和“Repl”的缓存。

我的 3 点:

  1. 尝试打开集群定义时,IHM 会显示加载图标、No stacktrace 或 ERROR in log stdOutput。 粘住
  2. 当尝试从服务器 NodeA 向 Dist 或 Repl 缓存之一插入密钥时,操作返回 401 not authorized ... 我不知道如何解决这个问题。

  3. 我成功地让用户命令行客户端访问我的集群,但我不知道如何在缓存中插入一些东西。我没有找到很多关于它的文档。

任何帮助将非常感激。

0 投票
1 回答
254 浏览

jakarta-ee - 用作 JCache (JSR-107) 提供程序时的 Infinispan 特定配置?

我们的 Thorntail (2.4.0.Final) webapp 使用 Infinispan 作为JCache (JSR-107) 提供者。除了 JCache 的属性(例如按值存储选项)之外,我们还想修改 Infinispan 的特定属性(例如默认获取超时)。

我们当前的解决方案不起作用。这是我们迄今为止尝试过的。

  • 定义infinispan.xml
  • 上面的配置然后由以下类使用:
  • FooCache接口定义为:
  • 以下是我们使用 JCache API 配置缓存的方式:

这是我们失败的地方,因为foo缓存已经存在(根据 XML 配置创建)。有没有办法配置现有的缓存?或者任何其他允许我们保持缓存提供者不可知论的替代方式?谢谢您的回答。

0 投票
0 回答
192 浏览

java - 使用多个线程从同一个缓存中读取时获得不同的值

我正在尝试使用 infinispan 缓存实现计数器系统。多个线程试图访问同一个键并针对该键增加值。

计数器操作以 lock(key) 开始,因此没有其他线程可以写入它。获得锁的线程执行 get(key),递增值并将其放回同一个键。

另一个等待锁释放的线程调用 get(key)。get(KEY) 返回先前的值,而不是预期的更新计数器值。

我正在针对每个线程中的缓存开始一个新事务。事务是自动提交的。

我尝试使用自动提交以及在放置后显式提交。我还确保在每次运行之前清除文件持久性和数据库持久性。

这是我的 infinispan 缓存配置。

预期的结果是,当另一个线程尝试获取相同的值时,应该反映一个线程对值所做的任何更新。

我最好的猜测是它必须对每个线程创建的事务做一些事情。

我无法分享实际代码,但以下代码近似于该过程。希望这可以帮助

0 投票
1 回答
471 浏览

spring-boot - Infinispan + Spring Boot - 不缓存

尝试使用自定义注释在 Spring Boot 上实现 infinispan 基础缓存:

上面的类 << CacheAnnotationAspect >> 是自定义注释@CacheResult Aspect 实现,它将首先尝试从缓存中检索,如果没有找到,将进行实际的 dao 调用,然后存储在缓存中。

下面是 InfinispanCacheService 的实现,它调用 cachemager 来获取/放置缓存条目。

<<<<<< 下面的 DefaultCacheManager 是在启动期间通过加载 infispan.xml 配置来初始化 DefaultCacheManager >>>>>

<<<< Infinispan.xml 配置 >>

控制器级别的注释:

<< EavAttributeService >>

<<缓存配置>>

问题: 数据没有获得缓存,无论在哪里使用 @CacheResult 注释,都会调用 CacheAnnotationAspect 并且数据检查也在缓存中发生,但是当它尝试将数据存储在缓存中时,它不会缓存并且每次后续调用此方法不返回任何数据。

0 投票
0 回答
102 浏览

java - Wildfly 17 上的休眠 ogm infinispan @manytoone 双向问题

当我将 infinispan ogm 与文件存储配置一起使用时,我遇到了一个问题。我的问题如下。我在 wildfly 17 上部署了一个非常小的 REST 应用程序,能够持久保存和读取非常简单的数据模型。数据模型由双向多对一关联组成。

当我坚持一个 Foo (由一个 Bar 组成)时,我可以 getFoo 并且 Foo 对象包含一个 Bar ,但是当我在获得 Foo 对象时重新启动其余应用程序时,我失去了 Bar 关联。当我得到 Bar 对象时,存在与 Foo 对象的关联。这是我的应用程序 presistence.properties 的配置(我使用生产者以编程方式构建基于 HibernateOgmPersistence 的 entityManager)。似乎双向仅以一种方式起作用

这是 infinispan 配置

hibernate ogm 使用的版本是

请注意, 我已经使用 mongodb 更改了提供程序,并且它运行良好。

0 投票
2 回答
784 浏览

security - 无限9'' 不是允许的元素

Wildfly 18 驱逐标签未解析,导致解析配置错误。当我将 Wildfly 11 升级到 18 时,就会出现这种情况。在 Wildfly 11(infinispan 4)中,它工作正常

在 Wildfly 18 中具有以下部分(不工作)

它给出 ^^^^ 'eviction' 在这里不是一个允许的元素。infinispan:9.4它说驱逐是通过添加配置的,但即使这样也会提供无法识别的标签内存。

如何添加驱逐策略=LRU 或替换策略:“LRU”=?