24.3.9. 将 HTTP 会话外部化到红帽数据网格
您需要红帽数据网格订阅才能使用此功能。
红帽数据网格可用作 JBoss EAP 中应用特定数据的外部缓存容器,如 HTTP 会话。这允许扩展独立于应用的数据层,并使可能驻留于不同域中的不同 JBoss EAP 集群能够访问同一红帽数据网格集群的数据。此外,其他应用程序还可与红帽数据网格提供的缓存相连接。
下例演示了如何使 HTTP 会话外部化。它适用于 JBoss EAP 和受管域的单机实例。
-
创建
remote-cache-container。如需更多信息,请参阅配置远程缓存容器。 配置 HotRod 存储.HotRod 存储将专用远程缓存用于 JBoss EAP 服务器创建的每个缓存。通常,JBoss EAP 服务器上使用一个无效缓存,如下 CLI 脚本中所示。
注意远程缓存需要在红帽数据网格服务器上手动配置。建议对这些缓存进行配置,是带有保守锁定的事务分发模式缓存。缓存名称必须与
test.war等部署文件名对应。配置了远程缓存容器后,可以配置热门
存储来取代任何现有的存储。以下 CLI 脚本演示了与无效缓存结合使用会话的典型用例:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该脚本配置一个新的无效缓存。然后,会话数据被保留在缓存中以获得性能并写入存储以获得弹性。
可以使用
@Resource注释将 HotRod 客户端直接注入到 Jakarta EE 应用中。在下例中,@Resource注释在hotrod-client.properties文件中查找类路径中的配置属性。@Resource(lookup = "java:jboss/infinispan/remote-container/web-sessions") private org.infinispan.client.hotrod.RemoteCacheContainer client;
@Resource(lookup = "java:jboss/infinispan/remote-container/web-sessions") private org.infinispan.client.hotrod.RemoteCacheContainer client;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例:
hotrod-client.properties文件Copy to Clipboard Copied! Toggle word wrap Toggle overflow
保护远程缓存容器
可以使用 SSL 保护与远程红帽数据网格实例的通信。这可以通过在 JBoss EAP 实例 上配置 remote-cache-container 并在红帽数据网格实例上调整 hotrod 连接器以使用活动的安全域来完成。
在 JBoss EAP 中创建
客户端-ssl-context。有关创建客户端-ssl-context的更多信息,包括生成其他 elytron 组件,请参阅 如何为 JBoss EAP 配置服务器 安全性中的 客户端-ssl-context。/subsystem=elytron/client-ssl-context=CLIENT_SSL_CONTEXT:add(key-manager=KEY_MANAGER,trust-manager=TRUST_MANAGER)
/subsystem=elytron/client-ssl-context=CLIENT_SSL_CONTEXT:add(key-manager=KEY_MANAGER,trust-manager=TRUST_MANAGER)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置远程缓存容器,以使用客户端 SSL 上下文。
/subsystem=infinispan/remote-cache-container=CACHE_CONTAINER/component=security:write-attribute(name=ssl-context,value=CLIENT_SSL_CONTEXT)
/subsystem=infinispan/remote-cache-container=CACHE_CONTAINER/component=security:write-attribute(name=ssl-context,value=CLIENT_SSL_CONTEXT)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保护远程红帽数据网格实例,并为每个实例重复此操作。
-
将
client-ssl-context中使用的密钥存储复制到远程红帽数据网格实例。 配置
ApplicationRealm以使用此密钥存储。/core-service=management/security-realm=ApplicationRealm/server-identity=ssl:add(keystore-path="KEYSTORE_NAME",keystore-relative-to="jboss.server.config.dir",keystore-password="KEYSTORE_PASSWORD")
/core-service=management/security-realm=ApplicationRealm/server-identity=ssl:add(keystore-path="KEYSTORE_NAME",keystore-relative-to="jboss.server.config.dir",keystore-password="KEYSTORE_PASSWORD")Copy to Clipboard Copied! Toggle word wrap Toggle overflow 调整热连接器以指向此安全域。
/subsystem=datagrid-infinispan-endpoint/hotrod-connector=hotrod-connector/encryption=ENCRYPTION:add(require-ssl-client-auth=false,security-realm="ApplicationRealm")
/subsystem=datagrid-infinispan-endpoint/hotrod-connector=hotrod-connector/encryption=ENCRYPTION:add(require-ssl-client-auth=false,security-realm="ApplicationRealm")Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入远程红帽数据网格实例。
reload
reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
将