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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RMI соединение 
V
    Опции темы
powerOn
Дата 17.3.2006, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Привет всем!

Создал я RMI сервер, запустил, зарегистрировал его в rmiregistry,
подсоединяюсь к нему клиентом, все работает, но подсоединись я к нему 2 и более
клиентами выясняется что сервер на всех один. Один, и это значит, данные на удаленном объекте не сохранишь, проблемы с разделением времени работы сервера между клиентами и т.д. и т.п.
Я же хочу чтоб когда я создаю удаленный объект:
Код

TestInterface testObject = (TestInterface) Naming.lookup("rmi://localhost:1234/TestService1");

создавалась его новая копия ( с вызовом конструктора ), а не возвращалась ссылка на имеющийся.

я конечно понимаю, что судя по методу регистрации (регистрируем именно объект, а не класс), это врядли получится. Но может как то по другому сделать можно?

Код

try {
            LocateRegistry.createRegistry(1234);
            TestImpl c1 = new TestImpl();
            Naming.rebind("rmi://localhost:1234/TestService1", c1);
        } catch (Exception e) {
            e.printStackTrace();
        }





--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
LSD
Дата 17.3.2006, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Ты регистрируешь сервер, а не объект. Это как сервер БД, он один на всех клиентов, он может различать клиентов, может не различать, это его дело.

У тебя два варианта, регистрировать по серверу на каждого пользователя (под разными именами). Или делать идентификацию пользователей. Последнее обычно предпочтительней.


--------------------
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   Вверх
powerOn
Дата 17.3.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Это все верно, можно написать различие сервером клиентов,
но это может снизить производительность системы.
Например если сервер обеспечивает длительные операции ввода/вывода:
один клиент подсоединился запросил длительную операцию -- другие клиенты,
которым подобные действия не нужны естественно ждут. Хотя система могла бы и обслужить их....

Регистрация по новому серверу мне не подходит поскольку соединение должно быть приватным, т.к. инкапсулирует определенные права. Нет никакой гарантии что его не займет кто-то другой, что сильно снижает безопасность....

Это сообщение отредактировал(а) MoonCat - 17.3.2006, 13:09


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
LSD
Дата 17.3.2006, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Нет. На каждого клиента создается свое свой поток. Например пусть у нас есть такой сервер:
Код
public class Server implements RemoteInfo
{
  private final Date startDate = new Date();

  public ServerInfo getServerInfo() throws RemoteException
  {
    System.out.println("One more client :(");
    try
    {
      Thread.sleep(60 * 1000);
    }
    catch(InterruptedException ex)
    {
    }
    
    ServerInfo serverInfo = new ServerInfo();
    serverInfo.version = "1.0";
    serverInfo.startTime = startDate;
    return serverInfo;
  }
}

и соответсвенно клиент:
Код
RemoteInfo stub = (RemoteInfo) initialContext.lookup("HFGTDT8ZF9V15ED42PGRDF9ZR0SNL5IK");
System.out.println("Calling getServerInfo()");
ServerInfo serverInfo = stub.getServerInfo();
System.out.println("Server version: " + serverInfo.version + ", server started at: " + serverInfo.startTime);

Запусти одновременно два клиента и посмотри.


--------------------
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   Вверх
powerOn
Дата 17.3.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


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

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



Гыыы. Верно. Для каждого клиенты свой поток. smile
А займуська я в этом случае идентификацией пользователей.....
спасибо.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
LSD
Дата 18.3.2006, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Пожалуйста smile
Только не забывай помечать топики как решенные smile


--------------------
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.0492 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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