4.7. Infinispan Server 配置更改
4.7.1. Infinispan 默认缓存配置更改 复制链接链接已复制到粘贴板!
在 JBoss EAP 6 中,用于 Web 会话复制和 EJB 复制的默认集群缓存是复制的 ASYNC
缓存。这在 JBoss EAP 7 中有所改变。默认集群缓存现在是分布式 ASYNC
缓存。默认情况下,复制的缓存不再配置。如需有关如何添加复制缓存并使其成为默认设置的信息,请参阅 JBoss EAP 配置指南中的配置缓存模式。
这仅在使用新的 JBoss EAP 7 默认配置时影响您。如果您从 JBoss EAP 6 迁移配置,则将保留 infinispan
子系统的配置。
4.7.2. Infinispan Cache 策略变化 复制链接链接已复制到粘贴板!
JBoss EAP 7 中更改了 ASYNC
缓存策略的行为。
在 JBoss EAP 6 中,ASYNC
缓存读取为空闲锁定。虽然它们永远不会被阻止,但这容易产生对陈旧数据的脏读取,例如在故障转移中。这是因为,它将允许对同一用户的后续请求在上一个请求完成之前启动。使用分布式模式时,这种行为是无法接受的,因为集群拓扑更改可能会影响会话关联,并容易产生过时的数据。
在 JBoss EAP 7 中,ASYNC
缓存读取需要锁定。由于它们现在阻止来自同一用户的新请求,直到之前的复制完成前,脏读取会被阻止。
4.7.3. 配置自定义有状态会话 Bean Cache 进行 Passivation 复制链接链接已复制到粘贴板!
在配置自定义有状态会话 Bean(SFSB)缓存以进行 JBoss EAP 7.1 及更高版本中传递时,请注意以下限制:
-
idle-timeout
属性(在ejb3
子系统的infinispan
passivation-store
中配置)已在 JBoss EAP 7.1 及更高版本中弃用。JBoss EAP 6.4 支持 eager 钝化,并根据idle-timeout
值进行钝化。JBoss EAP 7.1 及更高版本支持 lazy 钝化,当达到max-size
阈值时进行钝化。 -
在 JBoss EAP 7.1 及更高版本中,由 Jakarta Enterprise Beans 客户端使用的集群名称由通道的实际集群名称决定,如
jgroups
子系统中所配置。 -
JBoss EAP 7.1 及更高版本仍允许您设置
max-size
属性来控制传递阈值。 您不应该在 Jakarta Enterprise Beans 缓存配置中配置驱除或过期。
-
您应该通过在
ejb3
子系统中使用passivation-store
的max-size
属性来配置驱除。 -
您应该使用 SFSB Java 源代码中的
@StatefulTimeout
注释或通过在ejb-jar.xml
文件中指定stateful-timeout
值来配置到期。
-
您应该通过在
4.7.4. Infinispan Cache 容器传输更改 复制链接链接已复制到粘贴板!
JBoss EAP 7.0 和更新版本之间的行为更改要求对缓存容器传输协议的任何更新都必须以批处理模式或使用特殊标头来完成。这种行为变化也会影响任何用于管理 JBoss EAP 服务器的工具。
以下是用于在 JBoss EAP 7.0 中配置缓存容器传输协议的管理 CLI 命令示例。
/subsystem=infinispan/cache-container=my:add() /subsystem=infinispan/cache-container=my/transport=jgroups:add() /subsystem=infinispan/cache-container=my/invalidation-cache=mycache:add(mode=SYNC)
/subsystem=infinispan/cache-container=my:add()
/subsystem=infinispan/cache-container=my/transport=jgroups:add()
/subsystem=infinispan/cache-container=my/invalidation-cache=mycache:add(mode=SYNC)
以下是在 JBoss EAP 7.1 中执行相同配置所需的管理 CLI 命令示例。请注意,命令是以批处理模式执行的。
batch /subsystem=infinispan/cache-container=my:add() /subsystem=infinispan/cache-container=my/transport=jgroups:add() /subsystem=infinispan/cache-container=my/invalidation-cache=mycache:add(mode=SYNC) run-batch
batch
/subsystem=infinispan/cache-container=my:add()
/subsystem=infinispan/cache-container=my/transport=jgroups:add()
/subsystem=infinispan/cache-container=my/invalidation-cache=mycache:add(mode=SYNC)
run-batch
如果您不希望使用批处理模式,您可以在定义传输时指定操作标头 allow-resource-service-restart=true
。请注意,这将重新启动服务,以便操作可以生效,一些服务可能会停止工作,直到服务重启为止。
如果您使用脚本更新缓存容器传输协议,请务必检查它们并添加批处理模式。