【问题标题】:Don's stop Infinispan cache containers in WildFly (jBoss) on redeployDon 在重新部署时停止 WildFly (jBoss) 中的 Infinispan 缓存容器
【发布时间】:2015-07-15 16:53:46
【问题描述】:

我使用 WildFly 8.2 和 Immutant 2.1(应用程序在 Clojure 中)

每次我在 WildFly 集群中重新部署我的应用程序时,它的 Infinispan Web 缓存容器都会重新启动,并且所有用户会话都会丢失。

是否可以不重新启动缓存容器,或者在重新部署之前将数据刷新到磁盘?

提前致谢

统一更新: 感谢 sprockets 的回答,我可以找到可以满足我需要的 Web 容器配置:

<cache-container name="web" default-cache="repl" module="org.wildfly.clustering.web.infinispan" aliases="standard-session-cache">
    <transport lock-timeout="60000"/>
    <replicated-cache name="repl" batching="true" mode="ASYNC">
       <file-store preload="true" passivation="false" purge="false" relative-to="jboss.home.dir" path="infinispan-file-store">
          <write-behind/>
       </file-store>
    </replicated-cache>
</cache-container>

问题是 Web 容器对其配置非常挑剔,如果您使用不兼容的设置,则会引发信息量不大的异常。 所以基本上,你只需要添加

<file-store preload="true" passivation="false" purge="false" relative-to="jboss.home.dir" path="infinispan-file-store">
  <write-behind/>
</file-store>

到容器配置。

【问题讨论】:

    标签: caching jboss clojure wildfly infinispan


    【解决方案1】:

    Ifninispan 提供缓存钝化和缓存激活来执行此操作: https://docs.jboss.org/author/display/ISPN/Cache+Loaders+and+Stores#CacheLoadersandStores-CachePassivation

    缓存加载器可用于强制入口钝化和 在缓存中逐出时激活。缓存钝化的过程 从内存缓存中删除对象并将其写入辅助 驱逐时的数据存储(例如,文件系统、数据库)。缓存激活 是将对象从数据存储恢复到 需要使用的内存缓存。在这两种情况下, 配置的缓存加载器将用于从数据存储中读取和 写入数据存储。

    我们使用它来将数据从集群的 hibernate-search 缓存容器钝化到像这样的文件存储(在我们的standalone-full-ha.xml 中):

    <cache-container name="hibernate-search" jndi-name="java:jboss/infinispan/container/hibernate-search" start="EAGER">
                <transport lock-timeout="330000"/>
                <replicated-cache name="LuceneIndexesMetadata" start="EAGER" mode="SYNC" remote-timeout="330000">
                    <locking striping="false" acquire-timeout="330000" concurrency-level="500"/>
                    <transaction mode="NONE"/>
                    <eviction strategy="NONE" max-entries="-1"/>
                    <expiration max-idle="-1"/>
                    <state-transfer enabled="true" timeout="480000"/>
                    <file-store preload="true" passivation="false" purge="false" relative-to="jboss.home.dir" path="infinispan-file-store">
                        <write-behind/>
                    </file-store>
                    <indexing index="NONE"/>
                </replicated-cache>
    

    节点重启后数据就可用了。

    描述所有有效元素和属性的子系统架构可以在 Wildfly 发行版的 docs/schema 目录中找到。

    另见:

    【讨论】:

      猜你喜欢
      • 2015-08-09
      • 2015-12-13
      • 1970-01-01
      • 2018-11-03
      • 2020-06-19
      • 2018-06-20
      • 1970-01-01
      • 2012-09-17
      • 2012-06-29
      相关资源
      最近更新 更多