如何在许多应用程序服务器和单独的JVM上使用JVM RMI注册表

时间:2014-04-28 12:38:25

标签: java jboss jvm rmi

情况:一台服务器机器安装了一些应用程序服务器(JBoss)。 JVM对整个机器来说都是独一无二的,它被每个服务器使用。 每个服务器都有自己的RMI存根,它在服务器启动时在RMI注册表中注册。但是,为了正确处理RMI,​​需要定义Java属性java.rmi.server.codebase = jar文件的路径,其中包含用于存根的类。这是主要问题:当许多服务器使用一个JVM时,但定义的路径只是一个应用程序服务器目录。因此,RMI客户端无法连接到不同的服务器并调用不同版本的远程接口。

我认为有以下几种方式:

  1. 在每个应用程序服务器(在JBoss中)创建单独的RMI注册表,但我不知道它是如何制作的?
  2. 添加应用程序服务器的存根标志名称(例如host:port),然后从客户端查找所需服务器+存根的jndi名称?
  3. 还有其他变种吗?也许有人已经遇到过这样的问题?

1 个答案:

答案 0 :(得分:0)

(1)是您唯一的选择。它是用LocateRegistry.createRegistry()完成的,除非JBoss有办法永久配置它。您必须为每个注册表使用单独的端口。

(2)对我没有进一步解释甚至没有意义,除非它真的是(1)的延续。