24.3.9. 将 HTTP 会话外部化到红帽数据网格


注意

您需要红帽数据网格订阅才能使用此功能。

红帽数据网格可用作 JBoss EAP 中应用特定数据的外部缓存容器,如 HTTP 会话。这允许扩展独立于应用的数据层,并使可能驻留于不同域中的不同 JBoss EAP 集群能够访问同一红帽数据网格集群的数据。此外,其他应用程序还可与红帽数据网格提供的缓存相连接。

下例演示了如何使 HTTP 会话外部化。它适用于 JBoss EAP 和受管域的单机实例。

  1. 创建 remote-cache-container如需更多信息,请参阅配置远程缓存容器
  2. 配置 HotRod 存储.HotRod 存储将专用远程缓存用于 JBoss EAP 服务器创建的每个缓存。通常,JBoss EAP 服务器上使用一个无效缓存,如下 CLI 脚本中所示。

    注意

    远程缓存需要在红帽数据网格服务器上手动配置。建议对这些缓存进行配置,是带有保守锁定的事务分发模式缓存。缓存名称必须与 test.war 等部署文件名对应。

    配置了远程缓存容器后,可以配置热门 存储 来取代任何现有的存储。以下 CLI 脚本演示了与无效缓存结合使用会话的典型用例:

    batch
    /subsystem=infinispan/cache-container=web/invalidation-cache=CACHE_NAME:add()
    /subsystem=infinispan/cache-container=web/invalidation-cache=CACHE_NAME/store=hotrod:add(remote-cache-container=CACHE_CONTAINER,fetch-state=false,purge=false,passivation=false,shared=true)
    /subsystem=infinispan/cache-container=web/invalidation-cache=CACHE_NAME/component=transaction:add(mode=BATCH)
    /subsystem=infinispan/cache-container=web/invalidation-cache=CACHE_NAME/component=locking:add(isolation=REPEATABLE_READ)
    /subsystem=infinispan/cache-container=web:write-attribute(name=default-cache,value=CACHE_NAME)
    run-batch
    Copy to Clipboard Toggle word wrap

    该脚本配置一个新的无效缓存。然后,会话数据被保留在缓存中以获得性能并写入存储以获得弹性。

    可以使用 @Resource 注释将 HotRod 客户端直接注入到 Jakarta EE 应用中。在下例中,@ Resource 注释在 hotrod-client.properties 文件中查找类路径中的配置属性。

    @Resource(lookup = "java:jboss/infinispan/remote-container/web-sessions")
    private org.infinispan.client.hotrod.RemoteCacheContainer client;
    Copy to Clipboard Toggle word wrap

    示例: hotrod-client.properties 文件

    infinispan.client.hotrod.transport_factory = org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory
    infinispan.client.hotrod.server_list = 127.0.0.1:11222
    infinispan.client.hotrod.marshaller = org.infinispan.commons.marshall.jboss.GenericJBossMarshaller
    infinispan.client.hotrod.async_executor_factory = org.infinispan.client.hotrod.impl.async.DefaultAsyncExecutorFactory
    infinispan.client.hotrod.default_executor_factory.pool_size = 1
    infinispan.client.hotrod.default_executor_factory.queue_size = 10000
    infinispan.client.hotrod.hash_function_impl.1 = org.infinispan.client.hotrod.impl.consistenthash.ConsistentHashV1
    infinispan.client.hotrod.tcp_no_delay = true
    infinispan.client.hotrod.ping_on_startup = true
    infinispan.client.hotrod.request_balancing_strategy = org.infinispan.client.hotrod.impl.transport.tcp.RoundRobinBalancingStrategy
    infinispan.client.hotrod.key_size_estimate = 64
    infinispan.client.hotrod.value_size_estimate = 512
    infinispan.client.hotrod.force_return_values = false
    
    ## below is connection pooling config
    
    maxActive=-1
    maxTotal = -1
    maxIdle = -1
    whenExhaustedAction = 1
    timeBetweenEvictionRunsMillis=120000
    minEvictableIdleTimeMillis=300000
    testWhileIdle = true
    minIdle = 1
    Copy to Clipboard Toggle word wrap

保护远程缓存容器

可以使用 SSL 保护与远程红帽数据网格实例的通信。这可以通过在 JBoss EAP 实例 上配置 remote-cache-container 并在红帽数据网格实例上调整 hotrod 连接器以使用活动的安全域来完成。

  1. 在 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)
    Copy to Clipboard Toggle word wrap
  2. 配置远程缓存容器,以使用客户端 SSL 上下文。

    /subsystem=infinispan/remote-cache-container=CACHE_CONTAINER/component=security:write-attribute(name=ssl-context,value=CLIENT_SSL_CONTEXT)
    Copy to Clipboard Toggle word wrap
  3. 保护远程红帽数据网格实例,并为每个实例重复此操作。

    1. client-ssl-context 中使用的密钥存储复制到远程红帽数据网格实例。
    2. 配置 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")
      Copy to Clipboard Toggle word wrap
    3. 调整热连接器以指向此安全域。

      /subsystem=datagrid-infinispan-endpoint/hotrod-connector=hotrod-connector/encryption=ENCRYPTION:add(require-ssl-client-auth=false,security-realm="ApplicationRealm")
      Copy to Clipboard Toggle word wrap
    4. 重新载入远程红帽数据网格实例。

      reload
      Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat