Ресурсы Java RMI - PullRequest
       18

Ресурсы Java RMI

12 голосов
/ 02 января 2009

Привет всем. В настоящее время я занимаюсь проектом, предусматривающим широкое использование Java RMI, и мне было интересно, если кто-нибудь знает о каких-либо хороших ресурсах об этом.

Проблема с материалом, который я нахожу в настоящее время, состоит в том, что он обычно довольно устарел (как Java 1.3) и / или наполовину завершен. Я даже был бы счастлив купить книгу об этом, но, глядя на Амазон, всем книгам уже 7 лет.

Так что, если кто-нибудь знает о каких-либо хороших ресурсах, книгах или хороших примерах реализации, мне было бы очень интересно узнать о них. Заранее спасибо за помощь.

Ответы [ 10 ]

9 голосов
/ 03 февраля 2009

RMI Hello World выглядит неплохо для начала. Конечно, это все еще простой пример, поэтому, возможно, советы по производительности / масштабируемости RMI будут полезны, поскольку вы уже знакомы с RMI.

5 голосов
/ 29 января 2009

За последние годы Java.RMI очень мало изменился, поэтому на большую часть старой документации все еще можно ссылаться. Обратите внимание, что одним существенным изменением является необходимость компилировать заглушки RMI, если вы используете версию Java 5.0. Большинство людей отошли от RMI и приняли River (ранее называвшийся Jini) для распределенных систем.

Если вы все еще думаете о переходе на RMI, я бы посоветовал прочитать документацию Oracle или разместить свои вопросы на их форумах .

Что касается книг… Java RMI Уильяма Гроссо или Java Network Programming Эллиотта Гарольда.

4 голосов
/ 02 января 2009

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

3 голосов
/ 03 февраля 2009

Если вы собираетесь интенсивно использовать RMI, я бы посоветовал взглянуть на Spring Remoting . Это очень помогает в абстрагировании протокола удаленного взаимодействия, помогает переключать реализацию удаленного взаимодействия позже, если вам необходимо (например, переключиться на Hessian или SOAP).

При использовании RMI или любого другого протокола удаленных объектов следует помнить, что вы можете генерировать большой трафик, вызывая методы для удаленных объектов. В вашем коде может быть не очевидно, что эти объекты являются удаленными. Это может вызвать проблемы с производительностью.

Если вы можете, я бы посоветовал вам иметь архитектуру, более или менее ориентированную на сервисы, где вы вызываете удаленные сервисы для получения объекта данных, но не для слишком большого поведения этих объектов ...

3 голосов
/ 03 февраля 2009

Спасибо всем за ваши ответы. Я думаю, что то, что люди говорили о том, что RMI мало что изменила, является правильным, однако учебники все же могут быть немного лучше, они затеняют некоторые важные моменты.

В конце концов, лучшей книгой, которую я нашел, которая охватывает некоторые из действительно хороших моментов RMI, таких как Активация, была Сетевое программирование на Java и распределенные вычисления .

Я посмотрел на другую O'reilly Java RMI книгу и, по моему мнению, она не очень хороша для чего-то большего, чем самый маленький из проектов RMI.

2 голосов
/ 29 января 2009

Вы пробовали Sun't RMI учебник ? Все учебники Sun очень хороши, и обычно я начинаю с того, что начинаю изучать что-либо о Java.

Книга, которую мы использовали в школе с хорошим примером кода: Справочник разработчика J2EE . Имейте в виду, что это огромный справочник объемом около 1500 страниц и одна глава (около 50 страниц) по RMI.

1 голос
/ 01 октября 2010

Абсолютно бесценный статья о многодомных RMI (хосты с несколькими IP-адресами) Объясняет RMI в очень простом для понимания виде и рассматривает вопросы размещения реестров на машинах с более чем одним IP-адресом и как с частными IP тоже можно разобраться. Спас мой бекон.

1 голос
/ 03 января 2009

Книга О'Рейли RMI довольно хорошая. Пойти на это.

0 голосов
/ 04 июня 2016

Вот еще один хороший пример удаленного вызова метода с каркасом Redisson:

Давайте предположим, что YourServiceImpl содержит метод, который вам нужен для удаленного вызова, и реализует YourService интерфейс.

YourServiceImpl должен быть зарегистрирован в Redisson через объект RemoteService:

YourService yourService = new YourServiceImpl();

RRemoteService remoteService = redisson.getRemoteService();
remoteService.register(YourService.class, yourService);

Для удаленного вызова метода требуется только служебный интерфейс:

RRemoteService remoteService = redisson.getRemoteService();
YourService service = remoteService.get(YourService.class);

MyObject result = service.myMethod(someParam1, someParam2);

Также он поддерживает асинхронные вызовы.

// async interface for YourService
@RRemoteAsync(YourService.class)
public interface YourServiceAsync {

    RFuture<Long> someMethod1(Long param1, String param2);

    RFuture<Void> someMethod2(MyObject param);

}

RRemoteService remoteService = redisson.getRemoteService();
YourServiceAsync asyncService = remoteService.get(YourServiceAsync.class);

RFuture<Long> res = asyncService.someMethod1(12L, "param");
res.thenApply(r -> {
 ...
});

Подробнее здесь

0 голосов
/ 03 февраля 2009

В дополнение к уже упомянутым, статья Понимание внутренних компонентов Java RMI была вполне приличной ИМХО, пройдя немного по внутренним частям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...