![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| zone51 |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: 1 Всего: 1 |
Товарищи, подскажите пожалста почему написанный мной сервак на RMI в упор не хочет конекцицца к локалхосту.Перепробовал много чего.Спасибо заранее.
-------------------- The truth is out there |
||||
|
|||||
| powerOn |
|
||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 2 Всего: 159 |
Те неуказываешь протокол в URL
нужно: rmi://<host_name> [:<name_service_port>] /<service_name> к примеру:
а у тебя name:
|
||||
|
|||||
| zone51 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: 1 Всего: 1 |
MoonCat,
Спасибо. А не подскажете, почему то не срабатывает фрагмент кода
Хотя метод comeon описан правильно
Выдает ошибку:
Как я тока не крутил,ниче не помогает. Спасибо. Спасибо огромное. -------------------- The truth is out there |
||||||
|
|||||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 2 Всего: 159 |
[/quote] Я так понимаю это код клиента? Сдесь таже ошибка, name должен быть такого вида: rmi://<host_name> [:<name_service_port>] /<service_name> И зачем вот эта строка: sudokuRemoteImpl pr=new sudokuRemoteImpl(); ? так попробуй:
Это сообщение отредактировал(а) MoonCat - 27.5.2006, 19:50 |
|||
|
||||
| zone51 |
|
||||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: 1 Всего: 1 |
Уважаемый MoonCat
В общем в этом примере сервер и удаленный объект. У сервера есть метод add(sudokuRemoteImpl), который вызывают удаленные объекты при своем запуске. sudokuRemote-это интерфейс удаленного объекта. вот он
а sudokuRemoteImpl это его реализация вот она
ну это грубо говоря, самое основное. И есть сервер, тоже как удаленный объект. вот он
И реализация вот она
В общем удаленный объект запускается на какой то удаленной машине, и в методе main ищет уже запущенный где-то (на локалхосте) сервер, соединяется с ним и вызывает методы. В общем как показали опыты, проблема в том, что глючит механизм вызова этого метода comeon у сервера, с подключением к серверу все нормально. Другие методы, с параметрами int Или другими работают как часы, а этот не хочет в упор. Порылся в нете и нашел это:
Нифига не понял, только что проблема типа серьезная. Подскажите что делать? Спасибо. горю. -------------------- The truth is out there |
||||||||||
|
|||||||||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 2 Всего: 159 |
Я так понимаю, что ты хочешь передать удаленному компоненту ссылку на свой локальный объект. А удаленный компонент в свою очередь вызывал бы методы этого объекта, и приэтом, выполнение метода локального объекта происходило на локальной машине. Т.е. передается не сам объект, а ссылка на него. Получается что-то вроде RMI Callback-а. zone51, я правильно тебя понял?
Если да то вот пример кода позволяющего это сделать. Имеется 2 удаленных интерфейса и 2 его реализации, Клиент и Регистратор Удаленного сервиса. TestInterface1 - интерфейс удаленного компонента. TestInterface2 - интерфейс компонента которого будем передовать в удаленный метод. TestInterface1Impl - реализация TestInterface1 TestInterface2Impl - реализация TestInterface2 Registrator- регистратор для TestInterface1Impl. Client - клиент для TestInterface1Impl (создает объект TestInterface2Impl и передает его удаленному серверу, который в свою очередь вызывает его метод) Надеюсь, это то что тебе нужно. Присоединённый файл ( Кол-во скачиваний: 10 )
src.zip 2,55 Kb |
|||
|
||||
| zone51 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 17.2.2006 Репутация: 1 Всего: 1 |
MoonCat,
Огромное спасибо, мне действительно помог ваш пример, но у меня тут щас новая фича: в общем по RMI. Короче как осуществить обратную связь удаленных компонент и сервера: То есть сервер посылает на 9 удаленных машин 9 задач, они какое то время работают, может день, может секунду, и как потом этот результат возвратить? банально поставить таймер или есть какие то спецфункции RMI?. Я так думаю: у сервера есть метод посылающий и принимающий. Посылающий посылает задачу, когда удаленный объект ее решает, то он вызывает принимающий метод сервера и передает ему результат. А в клиенте как? Просто ждать и через какие то промежутки времени проверять решено или нет? Спасибо -------------------- The truth is out there |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 2 Всего: 159 |
Мне нравится такой вариант. Но он будет работоспособен, если клиент (ждет решения, а сервер - решает задачу) работает на протяжении всего времени решения задачи. Сервер в этом случае мог бы уведомить клиента обратным вызовом. Это серьезно бы сняло нагрузку с сети, поскольку клиенту не пришлось бы постоянно спрашивать у сервера: "Ну что, готово? Ну, готово?...." Второй вариант,
когда клиент постоянно мучает вопросами сервер о завершенной задачи подойдет, если клиент может отключиться и вернуться через день. Т.е нагрузили сервак задачами, выключили клиента, а через пару часов проверили есть ли результаты. Тут нужно учесть специфику задачи, особенно длительность её выполнения. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |