Пользовательский процесс RMI Activator - PullRequest
0 голосов
/ 17 января 2012

Я пытаюсь реализовать собственную схему активации RMI, в которой удаленные активируемые объекты будут размещаться в пользовательском процессе EXE вместо стандартного Java.exe / Javaw.exe.

В RMI «Активируемые» объекты можно сохранять, восстанавливать или запускать по требованию. После регистрации активируемого объекта в реестре RMI и первого запроса RMID запускает дочерний процесс хоста (обычно java.exe / javaw.exe), пропускает две части информации через стандартный ввод дочернего процесса и запрашивает дочерний процесс для запуска метода main специального скрытого класса sun.rmi.server.ActivationGroupInit. Этот класс загружает все остальное, подготавливает процесс к созданию и размещению экземпляров объекта Activatable. Здесь после того, как клиент и сервер общаются через RMI.

Я дошел до определения простого проекта Win32 EXE, написав некоторый код JNI для запуска JVM внутри этого EXE-файла и сумев вызвать основной метод sun.rmi'server.ActivationGroupInit. Этот класс может анализировать стандартный ввод и извлекать все, что ему нужно для создания ActivationGroup. Однако я сталкиваюсь с некоторыми проблемами, которые в конечном итоге приводят к сбою активации удаленного объекта (с UnknownObjectException), и я нахожусь в процессе его устранения.

В этот момент я просто хотел сделать шаг назад и спросить, пытался ли кто-нибудь сделать это раньше, и знает, есть ли какие-то ошибки, которые я должен знать на ранней стадии?

Спасибо, Ранджит

1 Ответ

0 голосов
/ 06 февраля 2012

Как мы бесконечно обсуждали на форумах Oracle, вам это не нужно. Просто скопируйте java.exe или javaw.exe или напишите свою собственную оболочку, которая просто запускает JVM, используя все аргументы, которые передаются точно так же, как java.exe. Вам не нужно беспокоиться о том, что система активации отправит вам на стандартный ввод и т. Д., Существующие классы активации сделают все это за вас.

...