У меня есть проблема с настройкой jdbc-store для infinispan. Я определил локальный кэш с этой конфигурации:Использование infinispan с jdbc-store в wildfly-8.1.0.Fianl
<cache-container name="MyCacheContainer">
<local-cache name="MyCache">
<expiration max-idle="60000" interval="6000"/>
</local-cache>
</cache-container>
мне нужно упорствовать кэш, так что я пытаюсь использовать JDBC-магазин, используя этот источник
<datasource jta="true" jndi-name="java:jboss/datasources/MyDS" pool-name="MyDS" enabled="true" use-ccm="true">
<connection-url>jdbc:h2:file:${jboss.server.data.dir}/db;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
<driver-class>org.h2.Driver</driver-class>
<driver>h2</driver>
<security>
<user-name>abc</user-name>
<password>abc</password>
</security>
</datasource>
данных Когда я пытаюсь настроить JDBC-магазин в wildfly веб-консоли я имел эту ошибку:
Internal Server Error
{
"outcome" => "failed",
"result" => {"step-1" => undefined},
"failure-description" => "JBAS014883: No resource definition is registered for address [
(\"subsystem\" => \"infinispan\"),
(\"cache-container\" => \"MyCacheContainer\"),
(\"local-cache\" => \"MyCache\"),
(\"jdbc-store\" => \"JDBC_STORE\")
]",
"rolled-back" => true
}
Если я вручную редактировать standalone.xml добавления этого конфиги
<cache-container name="MyCacheContainer">
<local-cache name="MyCache">
<expiration max-idle="60000" interval="6000"/>
<string-keyed-jdbc-store preload="false" passivation="false" purge="false" datasource="java:jboss/datasources/MyDS"/>
</local-cache>
</cache-container>
У меня есть обычная сериализация кеша на db, но она не работает должным образом, потому что данные удаляются из db (а не из памяти) каждые 60000 миллисекунд, независимо от того, что они простаивают. Итак, если я перезапущу wildfly, кеш пуст. Кроме того, я заметил, что веб-консоль все еще говорит, что jdbc-store в disableb, и если я использую хранилище файлов вместо jdbc-store, все работает нормально, поэтому я подозреваю, что в моих конфигурациях есть некоторые проблемы.
Быстрое примечание: я вижу, что вы настроили опцию preload = "false". Если вы перезапустите Wildfly (с кешем), данные НЕ будут предварительно загружены из хранилища, и поэтому кеш будет пустым. Если у вас есть какие-то постоянные записи в вашем магазине, они должны быть загружены лениво по запросу. Попробуйте получить (some_key) в перезапущенном кеше. Какую версию Infinispan вы используете? – tsykora
@tsykora благодарит за ответ. Я попытался получить запись, и кеш пуст. Те же конфигурации, но с файловым хранилищем, работают как ожидалось. Я использую infinispan 6.0.2.Final – codadilupo
Хммм странно. Может быть, ошибка. Вы попробовали также двоичный ключ? + попробуйте удалить настройки срока действия, чтобы узнать, что произойдет потом. И спасибо за информацию! – tsykora