Общий кэш Infinispan 2LC
У меня есть два приложения, использующие те же объекты базы данных. Оба приложения развернуты в отдельных кластерах jboss eap 6.2. Таблицы БД обновляются только из одного приложения, но читаются из обоих приложений. Оба приложения используют собственные Hibernate API для чтения / записи данных из базы данных.
После включения Infispan в качестве 2LC во встроенном режиме, как я могу гарантировать, что объекты кэша, обновленные в одном приложении, будут аннулированы из кэша второго приложения? Любой интерфейс JMX/JMS для аннулирования кэша сигналов?
Если я перейду в режим удаленного кеширования и запусту infinispan в качестве сервера хотродов, то кеш-сервер может использоваться совместно обоими приложениями. Но тогда мне нужно обновить код для запроса сущностей из кеша с помощью клиентского API хотродов? Также он будет обновлять / аннулировать кэш автоматически, если объект обновляется из приложения.
1 ответ
Это не поддерживается В Hibernate нет удаленной реализации Infinispan второго уровня кеша. Внедренная реализация использует глубокую интеграцию со встроенными функциями и, следовательно, она не взаимозаменяема.
При использовании встроенного, каждое приложение получает свои собственные кэши, и они не могут быть разделены, потому что каждое приложение является отдельным загрузчиком классов. Таким образом, сущность A из загрузчика классов X не может быть прочитана с сущностью A из загрузчика классов Y.
Если вам действительно нужен общий кеш, ничто не мешает вам делать это самостоятельно, добавляя данные на удаленный Infinispan Server.