Java RMI, Можно ли отправить сериализованный объект, не помещая файл класса @ на веб-сервер? - PullRequest
1 голос
/ 24 мая 2011

В последнее время я экспериментировал с RMI и обнаружил, что, похоже, не могу отправить сериализованный объект, если файл класса также не хранится на веб-сервере. Означает ли это, что все мои сериализуемые классы должны быть помещены в путь к классу веб-серверов?

Мне не кажется лучшим дизайном, ИМХО.

Ответы [ 3 ]

3 голосов
/ 25 мая 2011

Нет. Все эти ответы неверны.

Классы не должны существовать с обеих сторон, если вы используете функцию кодовой базы RMI. Вы можете настроить веб-сервер для размещения файлов JAR и установить -Djava.rmi.server.codebase =, чтобы определить, где эти классы доступны в виде списка URL-адресов этих файлов JAR. Вы устанавливаете это либо на сервере, либо на клиенте, либо на обоих, в зависимости от того, кто будет отправлять классы, которых у другой стороны нет. Затем RMI аннотирует эти классы этими URL-адресами, чтобы цель знала, где их получить, и загружает их при необходимости.

0 голосов
/ 24 мая 2011

Да, файл класса также должен существовать на веб-сервере, так как RMI предназначался (в далеком прошлом) для отправки экземпляра класса по сети. Если вы просто хотите отправить данные на веб-сервер без какого-либо инкапсулирующего бизнес-поведения класса, то есть гораздо более новые и простые способы (JSON, XML, SOAP и т. Д.) Для простой отправки данных.

0 голосов
/ 24 мая 2011

Да, классы должны существовать с обеих сторон.

...