未使用Wildfly 15+使用invalidation-cache和jdbc-store自动创建Infinispan缓存表

时间:2019-04-27 13:45:09

标签: wildfly infinispan session-replication jboss-cli

我正在尝试在Wildfly 15+中为我的会话缓存使用jdbc-store类型。

我运行了以下命令来配置我的standalone-full-ha.xml配置文件:

/subsystem=infinispan/cache-container=web/invalidation-cache=jdbc/:add(mode=SYNC)
/subsystem=infinispan/cache-container=web/invalidation-cache=jdbc/store=none:remove(){allow-resource-service-restart=true}
/subsystem=infinispan/cache-container=web/invalidation-cache=jdbc/store=jdbc/:add(data-source="...",passivation=false,shared=true){allow-resource-service-restart=true}
/subsystem=infinispan/cache-container=web/invalidation-cache=jdbc/component=transaction/:add()
/subsystem=infinispan/cache-container=web/invalidation-cache=jdbc/component=transaction/:write-attribute(name=mode,value=BATCH)
/subsystem=infinispan/cache-container=web:write-attribute(name=default-cache,value=jdbc)

...在配置文件中产生以下内容:

<cache-container name="web" default-cache="jdbc" module="org.wildfly.clustering.web.infinispan">
    <transport lock-timeout="60000"/>
    <invalidation-cache name="jdbc">
        <transaction mode="BATCH"/>
        <jdbc-store data-source="..." passivation="false" shared="true">
            <table/>
        </jdbc-store>
    </invalidation-cache>
    <distributed-cache name="dist">
        <locking isolation="REPEATABLE_READ"/>
        <transaction mode="BATCH"/>
        <file-store/>
    </distributed-cache>
</cache-container>

看起来我已经使用JBoss CLI正确配置了缓存,但是当集群实例启动时,即使一切正常启动,也不会在数据库中创建会话存储表。

我的问题是,我应该忽略<table/>元素中需要设置的内容吗?看着documentation,我看不到任何必需的属性或关于自动创建的任何内容。

我已经看过先前的examples如何在Wildfly 11中实现此目标,但是string-keyed-jdbc-store元素似乎不再有效。我知道Infinispan documentationcreate-on-start元素上提到了string-keyed-table属性,但是此配置在Wildfly中有很大的不同,以至于完全无用。

1 个答案:

答案 0 :(得分:0)

添加

<property name="createTableOnStart">
    true
</property>
在您的jdbc-store元素中

并确保您的web.xml为<distributable />