Comments 14
У rmiregistry есть неприятная особенность, регистрировать объекты можно только с того же компьютера, с которого она запущена. При попытке зарегистрировать объект из другого компьютера выдается невнятная ошибка.
0
Тут два варианта, либо стаб система не нашла, либо codebase не прописан.
0
При попытке зарегистрировать стаб на удалённом rmiregistry, на стороне rmiregistry возбуждается исключение AccessException. К нам оно приходит в виде RemoteException:
RemoteException — if remote communication with the registry failed; if exception is a ServerException containing an AccessException, then the registry denies the caller access to perform this operation (if originating from a non-local host, for example) (из api ref для Registry.bind)
Тоже самое будет при попытке unbind и rebind
Вообще из соображений безопасности, это весьма логично…
RemoteException — if remote communication with the registry failed; if exception is a ServerException containing an AccessException, then the registry denies the caller access to perform this operation (if originating from a non-local host, for example) (из api ref для Registry.bind)
Тоже самое будет при попытке unbind и rebind
Вообще из соображений безопасности, это весьма логично…
+3
Логично… С другой стороны, почему нельзя было сделать возможность разрешенного диапазона адресов для регистрации. (а если сделано, то не очевидно...)
Если делать систему из N вычислительных единиц, которые обмениваются данными друг с другом, причем время от времени могут менять свое местоположение (такая вот распределенная система =) ), то каждый запрос будет выглядеть примерно так:
Есть главный компьютер «Главный», который знает актуальное положение всех единиц
Тогда запрос будет проходить так:
Вместо вполне логичного:
Ведь запись в rmiregistry(bind) представляет собой всего:
1) «Место» где находится объект
2) Тип объекта (.class фаил)
Получается вполне логично было бы сделать возможность регистрацию объектов с других компьютеров.
PS А вообще, по части удаленных вызовов с PyRo (правда это Python) по красоте сравниться не может ни одна из существующих RPC (Ice, Corbo и другие). Если брать microsoft, то можно со счета сбиться какую по счету RPC они предлагают.
PPS ссылка на минимальный пример использования PyRo
Если делать систему из N вычислительных единиц, которые обмениваются данными друг с другом, причем время от времени могут менять свое местоположение (такая вот распределенная система =) ), то каждый запрос будет выглядеть примерно так:
Есть главный компьютер «Главный», который знает актуальное положение всех единиц
Тогда запрос будет проходить так:
Единица1 запрашивает у rmiregistry Главного "ссылку" на Главного (актуальную, но это не обязательно)
Единица1 запрашивает у Главного положение Единицы2
Единица1 запрашивает у rmiregistry Единица2 "ссылку" на Единица2
Единица1 запрашивает у Единица2 метод
Вместо вполне логичного:
Единица1 запрашивает у rmiregistry Главного "ссылку" на Единица2
Единица1 запрашивает у Единица2 метод
Без использования дополнительно-созданного аналога DNSВедь запись в rmiregistry(bind) представляет собой всего:
1) «Место» где находится объект
2) Тип объекта (.class фаил)
Получается вполне логично было бы сделать возможность регистрацию объектов с других компьютеров.
PS А вообще, по части удаленных вызовов с PyRo (правда это Python) по красоте сравниться не может ни одна из существующих RPC (Ice, Corbo и другие). Если брать microsoft, то можно со счета сбиться какую по счету RPC они предлагают.
PPS ссылка на минимальный пример использования PyRo
0
«Рассмотрим на примере распределённых вычислений.» — в данном случае «распределённых» слишком громко сказано.
0
>все параметры передаются по значению (т.е. копии объектов, а не ссылки на них, как это обычно происходит)
Вы тут неправы. В RMI есть возможность переадавать как по значению (Serializable), так и по ссылке (Remote).
Вы тут неправы. В RMI есть возможность переадавать как по значению (Serializable), так и по ссылке (Remote).
+1
Как всегда радует статья в стиле «я вчера почитал, а теперь расскажу вам...»
как вы надоели, пионеры
как вы надоели, пионеры
0
Sign up to leave a comment.
RMI (Remote Method Invocation)