Ehcache — реплицированное кэширование с использованием RMI

Я попытался использовать ehcache, и это сработало. И я просто пытаюсь реализовать распределенное кэширование с помощью ehcache RMI. Я выполнил шаги, указанные в URL-адресе: http://ehcache.org/documentation/distributed_caching_with_rmi.html?cf03800515=21D4D871!NTAxODEzNDE0OmNvcnByYWRpdXNzc286vsRypkVtSPb7t3MnL22gFQ==#

Но я не смог найти работающее распределенное кэширование...

<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,
rmiUrls=//<remotemachineip>:<i want to know what port id should be given here>/deviceCache1"/>

<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=<localmachineip>,port=<i want to know what port id should be given here>,
socketTimeoutMillis=120000"/>

Я дал какой-то номер порта, и у меня есть автономный код Java на двух машинах. Сначала я запускаю основную программу на машине моего друга, которая помещает данные в «deviceCache1», и пытаюсь получить доступ к этому кешу в своей основной программе. Но я не нахожу никакой связи между двумя машинами.

Я могу показаться глупым, но мне нужно знать несколько вещей о кэшировании. Пожалуйста, кто-нибудь проясните мои сомнения и помогите мне. Итак, мои вопросы: 1. Какие идентификаторы портов нужно указать в ehcache.xml на обеих машинах? 2. Нужно ли мне включить некоторые службы Windows для использования портов rmi? 3. Нужно ли мне добавлять какой-либо другой код для соединения между двумя машинами?

Пожалуйста, помогите мне как можно скорее. Спасибо


person Vidhya Vinodh    schedule 03.02.2011    source источник


Ответы (2)


Из-за ограничения размера комментариев это ответит на ваш вопрос

Конфигурация на сервере 1 будет такой

<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
    properties="hostName=localhost, port=40001,socketTimeoutMillis=2000"/>

Конфиг на server2 будет таким

<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
    properties="hostName=localhost, port=40002,socketTimeoutMillis=2000"/>

Если вы все еще сталкиваетесь с проблемой, вставьте файл ehcache.xml. Пожалуйста, примите ответ, если он отвечает на ваш вопрос.

person Amit    schedule 04.02.2011
comment
Server1 — ‹cacheManagerPeerProviderFactory class=net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory properties=peerDiscovery=manual, rmiUrls=//server2:40002/CacheName1/› На server2 ‹cacheManagerPeerProviderFactory class=net.sf.ehcache.distribution.RMICacheManagerPeerProviderDistribution properties=peerProviderFactory properties=peerDistribution. =manual, rmiUrls=//server1:40001/CacheName1/› - person Amit; 05.02.2011

Вам также необходимо добавить cacheEventListenerFactory в кеш (который необходимо реплицировать)

memoryStoreEvictionPolicy="LFU" diskPersistent="true"
timeToLiveSeconds="86400" maxElementsOnDisk="1000">

Вы можете указать любой порт (который не используется системой

person Amit    schedule 03.02.2011
comment
У меня есть ‹cacheEventListenerFactory›, связанный с моей записью ‹cache›. Но какой бы порт я ни указал для провайдера и слушателя, я не вижу никакой связи между двумя системами. Я пытаюсь получить доступ к кешу со второй машины, а со второй машины пытаюсь получить доступ к кешу со своей машины. Но ответа от обоих нет... поэтому мне интересно, нужно ли мне указывать какой-либо конкретный порт/нужно ли нам включать какие-либо службы, связанные с RMI/нужно ли нам писать какой-либо код для установления соединения или регистрации порта. - person Vidhya Vinodh; 04.02.2011