Я пытаюсь запустить RMI-активируемый сервер, но пока не повезло. На самом деле сервер работает, но клиент вызывает странное исключение.RMI Activation Странная проблема
У меня есть 3 проекта:
- клиента
- общий
- сервер
Общий общий код между клиентом и сервером (например, удаленные интерфейсы).
шаги я следую (адаптируют this tutorial):
- начало реестра -> OK
- запустить RMID -> OK Установка сервера
- старт -> OK
- запуска клиента - ->BOOM! Активация завершается сбоем, поскольку классы в общих не найдены с NoClassDefFoundError в потоке сервера.
Я включаю в себя общие файлы классов в базе кода для сервера, чтобы эти классы/интерфейсы были доступны для сервера. Он загружается на самом удаленном интерфейсе - поэтому единственная альтернатива, похоже, вытащила весь код в код сервера, но таким образом клиентский код должен будет знать о коде сервера, который просто отстой.
Я немного искал и выглядел как this guy here имеет ту же проблему.
Похоже, что в обоих случаях это происходит, когда активируемый сервер ссылается на классы в каком-либо другом пакете (в моем случае это настраиваемый пакет в ссылке выше третьих сторон).
Я действительно нахожусь здесь в убытке - так что любая идея будет оценена!
EDIT: Дополнительная информация. Я пытаюсь отладить проблему. Кажется, что клиент извлекает удаленный объект в объекте только штрафом (ссылка не является нулевой). Исключение выдается, как только вызывается метод удаленного интерфейса (клиент знает об этом интерфейсе). Если активация происходит при вызове 1-го метода, это довольно очевидно - но не слишком уверенно, когда он фактически пытался активировать удаленный объект/сервер.
err ... Я действительно пропускал путь к классам в * common * по параметру местоположения ActivationDesc ... Большое спасибо за определение этого! – JohnIdol