Обратные вызовы RMI в Eclipse RCP - PullRequest
0 голосов
/ 30 января 2011

Bundles

Итак, я использую RMI в приложении Eclipse RCP.Загрузчик классов RMI и OSGI так сильно ненавидят друг друга, но я мог решить свою первую проблему здесь .

Мое серверное приложение состоит из пакета Сервер , который зависит от Core .Кроме того, пакет Карта загружается с использованием точки расширения ядра ( DataUpdate ).

Аналогично Клиент запускается в зависимости от Core и загрузка Map в качестве плагина.

Теперь отправка User с клиента на Server больше не представляет проблемы(решенная проблема выше).К сожалению, обратное не работает. Клиент сохраняется как Обратный вызов на Сервер и должен получать DataUpdate объекты.Они создаются в пакете Map на сервере и отправляются через RMI.Когда я получаю их на стороне клиента, я получаю зловещее исключение ClassNotFound.Я делаю так же, как на сервере:

Thread.currentThread().setContextClassLoader(
                this.getClass().getClassLoader());

Но это не помогает.Кроме того, чтобы запустить и сервер, и клиент, мои параметры запуска:

-consoleLog -Djava.security.policy=java.policy -Djava.rmi.server.codebase=file:${workspace_loc}

А в клиенте я настроил менеджер безопасности на персональную реализацию, которая позволяет все.

Так что у кого-нибудь есть идеяпочему класс не найден?

1 Ответ

0 голосов
/ 04 марта 2011

Таким образом, циничный ответ на это - не использовать реализацию Sun RMI.

Сейчас я использую Kryonet , для которого я могу установить классы объектов, отправляемых по сети.Поскольку каждый из этих классов знает своего загрузчика классов, проблема решена.

...