![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Likurgius |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 20.8.2005 Репутация: нет Всего: нет |
Здраствуйте.. пишу приложение на RMI..возникла проблема...
есть сервер, кот. выполняет определенное кол-во RMI методов...... и есть 2!! типа клиентов-приложений..один из них может вызывать ВСЕ методы, другой только часть......... я попробовал сделать так: создал один интерфейс, который наследует от Remote.....назовем его Int...и от этого Int сделал еще один интерфейс..скажем IntExt ....... один клиент(который может выполнять ВСЕ методы), берет удаленный объект и приводит его к IntExt - все нормально....... другой(который может выполнять только часть методов), берет удаленный объект и приводит его к Int - тоже все нормально, но только тогда, когда он имеет доступ к IntExt......разве восходящие преобразование не может произойти минуя этот IntExt......ведь я не создаю объект(при котором вызываются конструктуры всех вышестоящих классов), а просто лишь делаю восходящие преобразование...... вопрос, есть ли еще другие способы как-нибудь разграничить "доступ" к методам? |
|||
|
||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: нет Всего: 13 |
без кода сказать сложно, приведи код
-------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
| LSD |
|
|||
![]() 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. |
|||
|
||||
| Likurgius |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 20.8.2005 Репутация: нет Всего: нет |
1.6
код большой....да и не думаю, что он поможет... |
|||
|
||||
| y3u |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 440 Регистрация: 9.9.2006 Где: Москва Репутация: нет Всего: 13 |
ну блин, тогда извини, на кофейной гуще гадать времени нету... Выдели основной кусок без функционала, именно что конкретно не получается, и пости сюда, будем препарировать... -------------------- В нашей стране настаивать на кореньях, черной смородине, лимонных корках - гораздо эффективнее, чем на правах |
|||
|
||||
| Likurgius |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 20.8.2005 Репутация: нет Всего: нет |
Вот первый интерфейс.....
вот второй:
проблема/вопрос, есть два разных приложения.....одному я хочу предоставить интейрфейс IntExt, другому Int.........(то есть разграничить доступ к разным удаленным методам) с первым проблем не возникает..........вот со вторым.........дело в том что, когда я получаю ссылку на удаленный объект, я делаю восходящее преобразование к WorkerInt.......НО при этом, вместе с .class файлами этого приложения, должен находится и WorkerIntExt.......вопрос - почему? ведь я делаю восходящие преобразование сразу к WorkerInt.....минуя WorkerIntExt......зачем тогда он нужен, если его это приложение не касается?? Возможно есть какие-нибудь другие варианта разграничения доступа в RMI? |
||||
|
|||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: нет Всего: 31 |
Что-то ты как-то путано объяснил. Во втором случае у тебя реально работа идёт (по сети общение) через Int или IntExt? В смысле, не то, что ты хочешь, а как оно внутрях идёт.
Если общение внутри идёт через IntExt, то он, естественно, обязан иметься и на клиенте, и на сервере. Сам подумай. ;) Или я тебя не понял? -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| Likurgius |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 20.8.2005 Репутация: нет Всего: нет |
в том-то и дело, что во втором случае через простой Int
|
|||
|
||||
| LSD |
|
|||
![]() 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. |
|||
|
||||
![]()
|
| Правила форума "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. |