2009-12-28 4 views
2

Я пытаюсь запустить RMI-активируемый сервер, но пока не повезло. На самом деле сервер работает, но клиент вызывает странное исключение.RMI Activation Странная проблема

У меня есть 3 проекта:

  • клиента
  • общий
  • сервер

Общий общий код между клиентом и сервером (например, удаленные интерфейсы).

шаги я следую (адаптируют this tutorial):

  • начало реестра -> OK
  • запустить RMID -> OK Установка сервера
  • старт -> OK
  • запуска клиента - ->BOOM! Активация завершается сбоем, поскольку классы в общих не найдены с NoClassDefFoundError в потоке сервера.

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

Я немного искал и выглядел как this guy here имеет ту же проблему.

Похоже, что в обоих случаях это происходит, когда активируемый сервер ссылается на классы в каком-либо другом пакете (в моем случае это настраиваемый пакет в ссылке выше третьих сторон).

Я действительно нахожусь здесь в убытке - так что любая идея будет оценена!

EDIT: Дополнительная информация. Я пытаюсь отладить проблему. Кажется, что клиент извлекает удаленный объект в объекте только штрафом (ссылка не является нулевой). Исключение выдается, как только вызывается метод удаленного интерфейса (клиент знает об этом интерфейсе). Если активация происходит при вызове 1-го метода, это довольно очевидно - но не слишком уверенно, когда он фактически пытался активировать удаленный объект/сервер.

ответ

2

Вы включили классы в общий пакет в расположение активируемого класса на сервере во время установки? Если у вас есть несколько путей, обязательно отделите их пробелами.

+0

err ... Я действительно пропускал путь к классам в * common * по параметру местоположения ActivationDesc ... Большое спасибо за определение этого! – JohnIdol