RMI создает экземпляры удаленных объектов - PullRequest
1 голос
/ 03 марта 2011

У меня есть сервер RMI для экспорта одного класса «Менеджер». Клиент RMI подключается к серверу и получает экземпляр класса «Manager». Затем я вызываю «Manager.createBox ()», который создает поле, а затем «Manager.getBox (0)», чтобы получить поле.

Теперь, если я внесу какие-либо изменения в тот «Ящик», который только что извлек, изменю его, а затем снова вызову «Manager.getBox (0)», я снова получу исходное поле без изменений. Как я могу "зафиксировать" изменения, которые я только что сделал в Box на стороне клиента? Или мне нужно добавить метод к менеджеру?

1 Ответ

2 голосов
/ 03 марта 2011

Если Box - это простой сериализуемый класс, то его состояние просто сериализуется, отправляется по проводам и десериализуется на клиенте при вызове getBox.Таким образом, клиент изменяет копию ящика, а не оригинал.

Если вы хотите, чтобы измененный ящик находился на сервере, то либо отправьте его обратно на сервер (manager.modifyBox(box)), либо сделайтеBox удаленный объект (делая его удаленным интерфейсом Box, реализованным конкретным классом BoxImpl, расширяющим UnicastRemoteObject).

...