Общий кэш Infinispan 2LC

У меня есть два приложения, использующие те же объекты базы данных. Оба приложения развернуты в отдельных кластерах jboss eap 6.2. Таблицы БД обновляются только из одного приложения, но читаются из обоих приложений. Оба приложения используют собственные Hibernate API для чтения / записи данных из базы данных.

После включения Infispan в качестве 2LC во встроенном режиме, как я могу гарантировать, что объекты кэша, обновленные в одном приложении, будут аннулированы из кэша второго приложения? Любой интерфейс JMX/JMS для аннулирования кэша сигналов?

Если я перейду в режим удаленного кеширования и запусту infinispan в качестве сервера хотродов, то кеш-сервер может использоваться совместно обоими приложениями. Но тогда мне нужно обновить код для запроса сущностей из кеша с помощью клиентского API хотродов? Также он будет обновлять / аннулировать кэш автоматически, если объект обновляется из приложения.

1 ответ

Решение

Это не поддерживается В Hibernate нет удаленной реализации Infinispan второго уровня кеша. Внедренная реализация использует глубокую интеграцию со встроенными функциями и, следовательно, она не взаимозаменяема.

При использовании встроенного, каждое приложение получает свои собственные кэши, и они не могут быть разделены, потому что каждое приложение является отдельным загрузчиком классов. Таким образом, сущность A из загрузчика классов X не может быть прочитана с сущностью A из загрузчика классов Y.

Если вам действительно нужен общий кеш, ничто не мешает вам делать это самостоятельно, добавляя данные на удаленный Infinispan Server.

Другие вопросы по тегам