JMX 和两个网络接口



在工作中,我们有两台装有Windows XP和JDK 1.6.0_07的PC(目前无法更新Java),两者都有两个网络接口(NIC),第一个具有 190.1.XXX.XXX 形式的IP(我们称之为IA),第二个具有 190.2.XXX.XXX(IB)。"ipconfig/all"为两个网卡带来了主机名HOSTNAME,"nbtstat/a IA"和"nbtstat/a IB"也是如此。从 IB 到 IA 不存在 ping(我想,从 IA 到 IB 没有 ping,尽管没有检查它)。为了健壮性,我们应该确保我们的实际应用程序在两个 NIC 上都与 JMX 一起工作。问题从这里开始了。在以下情况下可以观察到相同的行为:

java -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -jar <JDK_HOME>/demo/jfc/Java2D/Java2Demo.jar

在第二台PC上,使用IA:9000或IB:9000或主机名:9000之一连接到远程进程。他们都工作。但是,如果我在第一台PC上禁用IA(运行Java2Demo的地方),则根本不可能连接(无论是通过IB还是通过主机名)。IB的Ping有效,mstsc也是如此(因此IB有连接)。但是,如果我禁用 IB,我会通过 IA 和主机名获得附件。

  1. 我只是不明白在这种情况下,JConsole 不会附加到 IB 上。AFAIK,JMX 使用 0.0.0.0 并在两个 NIC 上侦听,如果我们不定义 java.rmi.server.hostname。如果这与网络本身有关,请告知 IT 部门如何要求。
  2. 我们真正的应用程序有一个解决方法:在第一台 PC 上,它启动 2 个单独的进程,每个进程仅在一个 NIC 上具有 JMX,第三个进程将来自客户端的数据与第三个 JMX 合并。这三个进程分别从.bat文件启动。我真的很想改变这一点,在两个 NIC 上都有一个进程和一个 JMX;或者,如果可能,至少使用两个 JMX 启动一个进程,每个 NIC 一个。是吗?

谢谢。

您可以使用JMXConnectorServerFactory在同一jvm上启动多个JMXConnectorServers(网上有很多示例/教程)。 您可以公开平台 MBeanServer 或您自己的自定义 MBeanServer。

最新更新