2010-02-03 2 views
0

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

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

В C++ (если у вас было rmi :), я мог бы передать указатель, но как я могу заставить java изменить базовое значение?

ответ

0

Как вы передаете удаленный объект? Существует два механизма: удаленные заглушки и сериализация. Поскольку вы говорите о доступе к полям, я предполагаю, что вы используете сериализацию (удаленные заглушки - это только интерфейсы, только методы, без полей).

Объекты, которые сериализуются, передаются в виде копии. Это всего лишь объекты ценности, на которые не повлияет то, что происходит с их «версией» на сервере позже. Если вам нужен объект, который продолжает «жить» на сервере, вы должны использовать объект Remote. В этом случае на клиенте создается только заглушка, и все вызовы методов идут на сервер.

+0

Хорошо, я следовал общей схеме здесь: http://java.sun.com/j2se/1.5.0/docs/guide/rmi/hello/hello-world.html только модифицирован, поэтому сервер может быть как клиент и сервер - если я правильно понимаю это, так как iam регистрирует объект с реестром и вызывает stub.foo(), он должен выполняться на сервере? – malangi

+0

Работало ли оно до версии сервера/клиента? – Thilo

Смежные вопросы