2014-09-22 4 views
0

У меня есть проблема с настройкой 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, все работает нормально, поэтому я подозреваю, что в моих конфигурациях есть некоторые проблемы.

+0

Быстрое примечание: я вижу, что вы настроили опцию preload = "false". Если вы перезапустите Wildfly (с кешем), данные НЕ будут предварительно загружены из хранилища, и поэтому кеш будет пустым. Если у вас есть какие-то постоянные записи в вашем магазине, они должны быть загружены лениво по запросу. Попробуйте получить (some_key) в перезапущенном кеше. Какую версию Infinispan вы используете? – tsykora

+0

@tsykora благодарит за ответ. Я попытался получить запись, и кеш пуст. Те же конфигурации, но с файловым хранилищем, работают как ожидалось. Я использую infinispan 6.0.2.Final – codadilupo

+0

Хммм странно. Может быть, ошибка. Вы попробовали также двоичный ключ? + попробуйте удалить настройки срока действия, чтобы узнать, что произойдет потом. И спасибо за информацию! – tsykora

ответ

0

Что касается конфигурации вручную в standalone.xml - вам нужно это сделать, как еще Infinispan знает, какой кеш (в общем случае) должен храниться в этом хранилище?

Что касается максимального времени ожидания: вы правы, что это неожиданно. Когда запись сохраняется в БД, там указывается дата истечения срока действия. Однако, когда вы читаете запись, эта временная метка не обновляется - тогда, когда выдается очистка DB, эти записи также удаляются.

Я не думаю, что для этого будет легко исправить это, но мне интересно, как это могло бы работать с SingleFileStore.

+0

Он уже подан: https://issues.jboss.org/browse/ISPN-3202 –

+0

спасибо! в отношении «ручной конфигурации». Я имею в виду редактирование standalone.xml, несмотря на использование веб-консоли Wildfly. Для хранилища файлов я могу использовать веб-консоль, но для хранилища jdbc у меня есть ошибка, как я описал в своем сообщении. Более того, добавление jdbc-store в файл standalone.xml не отражается в веб-консоли. Однако я попробую еще раз с файловым хранилищем, потому что я думаю, что он работает нормально (сообщенная ошибка относительно версии 5.2.6.Final) – codadilupo

+0

Хорошо, я был не прав ... хранилище файлов не работает. Может быть, я испортил во время теста. Во всяком случае, я думаю, что ошибка, подобная этой, очень очень плохо для «NoSQL key/value store или object database» с функцией истечения срока действия – codadilupo

Смежные вопросы