0

我正在尝试实现自定义 RMI 激活方案,其中远程 Activatable 对象将托管在自定义 EXE 进程中,而不是标准的 Java.exe/Javaw.exe。

在 RMI 中,“可激活”对象可以根据需要持久化、恢复或启动。在一个 'Activatable' 对象注册到 RMI 注册表并第一次请求之后,RMID 启动一个宿主子进程(通常是 java.exe/javaw.exe),通过子进程的标准输入传递两条信息并询问子进程运行一个特殊的隐藏类'sun.rmi.server.ActivationGroupInit'的主要方法。这个类是引导其他一切准备创建和托管“Activatable”对象实例的过程。在客户端和服务器通过 RMI 进行通信之后。

我已经定义了一个简单的 Win32 EXE 项目,编写了一些 JNI 代码来启动这个 EXE 中的 JVM,并设法调用了'sun.rmi'server.ActivationGroupInit' 的主要方法。此类能够解析标准输入并提取创建 ActivationGroup 所需的任何内容。但是,我遇到了一些最终导致远程对象激活失败(带有UnknownObjectException)的问题,我正在对其进行故障排除。

在这一点上,我只想退后一步,询问是否有人以前尝试过,并且知道是否有任何我应该尽早知道的陷阱?

谢谢,兰吉特

4

1 回答 1

0

正如我们在 Oracle 论坛上不断讨论的那样,您不需要任何这些。只需复制 java.exe 或 javaw.exe,或者编写您自己的包装器,该包装器使用与 java.exe 完全相同的方式传递的所有参数来启动 JVM。您无需担心激活系统在标准输入等上向您发送什么,现有的激活类将为您完成所有这些。

于 2012-02-06T09:29:49.703 回答