java - JMX/RMI,其中服务器没有全局唯一的网络名称

标签 java rmi jmx

考虑这个设置: JMX Server with multiple clients

所以有一个 JMX 服务器,我们希望不同的 JMX 客户端可以访问它,但问题是这些不同的 JMX 客户端通过不同的名称/地址知道 HostX。为了便于举例说明,我们假设 HostA 通过 hostx 名称了解 HostX,但 HostB 通过 hostxshadow 名称了解 HostX。

我正在寻找有关如何在以下情况下解决此问题的建议:

  1. 我可以控制 JMX 客户端和 JMX 服务器的源代码。

  2. 我无法控制源代码,即我可以在 JVM 上设置系统属性,但仅此而已。

要解决的基本问题是,在 RMI 世界中,服务器端决定客户端应如何连接(对吗?)。所以设置例如java.rmi.server.hostname在 HostX 上没有帮助。在我看来,我只能使 HostA 快乐或 HostB 快乐,但不能同时使两者快乐。

结论真的是任何 RMI 服务器只有在所有客户端都使用相同的名称访问它时才能工作吗?

最佳答案

你的结论是正确的。这是 RMI 的设计缺陷。有一个基本假设,即存在一个“最公开”的主机名或 IP 地址,每个人都可以通过它来联系服务器主机。

您关于主机在 stub 中嵌入自己的名称或地址的陈述也是正确的。

关于java - JMX/RMI,其中服务器没有全局唯一的网络名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21580565/

相关文章:

java - 序列化字段类

java - Java并发中什么时候使用公平模式?

java - HBase Java API HTrace 错误

java - StringEntity 的 Spring REST Controller

java - 在 Excel 中本地化数值

java - "RMI TCP Connection(idle)"线程对应什么类型的连接?

java - RmiProxyFactoryBean 超时

java - 如何使用 Ant 连接到远程服务器并启动/停止在该特定服务器上运行的 Tomcat?

java - 将 JMX MBean 访问记录到日志文件中

java - AWS Fargate - 从本地无法连接到在 aws fargate 上运行的 java 应用程序的 jmx 端口