Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Восходящие преобразование, RMI... разделение функциональности при RMI 
:(
    Опции темы
Likurgius
Дата 21.3.2007, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.8.2005

Репутация: нет
Всего: нет



Здраствуйте.. пишу приложение на RMI..возникла проблема...
есть сервер, кот. выполняет определенное кол-во RMI методов......
и есть 2!! типа клиентов-приложений..один из них может вызывать ВСЕ методы, другой только часть.........

я попробовал сделать так: создал один интерфейс, который наследует от Remote.....назовем его Int...и от этого Int сделал еще один интерфейс..скажем IntExt .......
один клиент(который может выполнять ВСЕ методы), берет удаленный объект и приводит его к IntExt - все нормально.......

другой(который может выполнять только часть методов), берет удаленный объект и приводит его к Int - тоже все нормально, но только тогда, когда он имеет доступ к IntExt......разве восходящие преобразование не может произойти минуя этот IntExt......ведь я не создаю объект(при котором вызываются конструктуры всех вышестоящих классов), а просто лишь делаю восходящие преобразование......

вопрос, есть ли еще другие способы как-нибудь разграничить "доступ" к методам?
PM MAIL   Вверх
y3u
Дата 21.3.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 9.9.2006
Где: Москва

Репутация: нет
Всего: 13



без кода сказать сложно, приведи код


--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
LSD
Дата 21.3.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Какая версия JDK используется?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Likurgius
Дата 22.3.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.8.2005

Репутация: нет
Всего: нет



1.6

код большой....да и не думаю, что он поможет...
PM MAIL   Вверх
y3u
Дата 22.3.2007, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 9.9.2006
Где: Москва

Репутация: нет
Всего: 13



Цитата(Likurgius @  22.3.2007,  00:15 Найти цитируемый пост)
код большой....да и не думаю, что он поможет... 


ну блин,  тогда извини, на кофейной гуще гадать времени нету... Выдели основной кусок без функционала, именно что конкретно не получается, и пости сюда, будем препарировать...


--------------------
В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах
PM MAIL   Вверх
Likurgius
Дата 22.3.2007, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.8.2005

Репутация: нет
Всего: нет



Вот первый интерфейс.....
Код

public interface WorkerInt extends java.rmi.Remote {
    public java.util.Map<String, javax.swing.ImageIcon> getConcerts()
            throws java.rmi.RemoteException;

    public boolean[][] getSitsState(String concert)
            throws java.rmi.RemoteException;

    public boolean reserveSit(String concert, String name, int row, int column)
            throws java.rmi.RemoteException;
}

вот второй:
Код

public interface WorkerIntExt extends WorkerInt {

    public boolean add(String title, String picture) throws java.rmi.RemoteException;

 
    public java.util.ArrayList<String> search(String name) throws java.rmi.RemoteException;

    public boolean delete(String name) throws java.rmi.RemoteException;
}


проблема/вопрос, есть два разных приложения.....одному я хочу предоставить интейрфейс IntExt, другому Int.........(то есть разграничить доступ к разным удаленным методам)
с первым проблем не возникает..........вот со вторым.........дело в том что, когда я получаю ссылку на удаленный объект, я делаю восходящее преобразование к WorkerInt.......НО при этом,  вместе с .class файлами этого приложения, должен находится и WorkerIntExt.......вопрос - почему? ведь я делаю восходящие преобразование сразу к WorkerInt.....минуя WorkerIntExt......зачем тогда он нужен, если его это приложение не касается??

Возможно есть какие-нибудь другие варианта разграничения доступа в RMI?
PM MAIL   Вверх
nornad
Дата 22.3.2007, 02:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: нет
Всего: 31



Что-то ты как-то путано объяснил. Во втором случае у тебя реально работа идёт (по сети общение) через Int или IntExt? В смысле, не то, что ты хочешь, а как оно внутрях идёт.
Если общение внутри идёт через IntExt, то он, естественно, обязан иметься и на клиенте, и на сервере. Сам подумай. ;)

Или я тебя не понял?


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Likurgius
Дата 22.3.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 20.8.2005

Репутация: нет
Всего: нет



в том-то и дело, что во втором случае через простой Int
PM MAIL   Вверх
LSD
Дата 22.3.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Я не знаю всех тонкостей работы RMI, но предполагаю что он работает так:
- у сервера при регистрации в RMI registry определяется какие интерфейсы он реализует (учитываются только те интерфейсы которые унаследованы от java.rmi.Remote)
- когда объект соединяется с сервером, он получает список все интерфейсов поддерживаемых данным классом, и на основе этого генерирует прокси, RMI же не может знать к какому интерфейсу ты будешь приводить класс


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0628 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.