Я не знаю ни одного сервера EhCache, к которому можно получить доступ с нескольких машин. Вы можете написать это сами и раскрыть, например, REST API, но вам также придется реализовать собственный CacheRegionFactory
для Hibernate, чтобы использовать удаленный сервер за кулисами. Много работы, и результат, скорее всего, будет неудовлетворительным из-за задержки в сети.
Другой подход заключается в том, чтобы иметь общий CacheManager
, который может использоваться несколькими приложениями в одной JVM. Но так как у вас есть несколько JVM, это не вариант. Также требуется, чтобы EhCache.JAR загружался родительским загрузчиком классов только один раз, поскольку он использует простое статическое поле для сохранения одного экземпляра .
Наконец, ответ на ваш вопрос - либо с использованием репликации кэша, либо Terracotta . Хотя Terracotta является очень сложным продуктом, кэш EhCache replication очень зрелый и стабильный.
Идея проста: у каждого сервера есть независимый экземпляр диспетчера кэша, но менеджеры кэша обнаруживают себя автоматически, используя UDP и сетевое вещание. Когда изменение происходит в одном из кэшей, оно передается другим узлам. Он не очень масштабируемый, но для двух серверов он должен работать нормально.