JMX和两个网络接口

时间:2012-06-02 19:28:22

标签: java network-programming jmx nic multihomed

在工作中,我们有两台装有Windows XP和JDK 1.6.0_07的电脑(暂时不能更新Java),两台都有两个网络接口(NIC),第一台有190.1.XXX.XXX形式的IP (我们称之为IA),第二个是190.2.XXX.XXX(IB)。 " ipconfig / all"为两个NIC带来主机名HOSTNAME,所以" nbtstat / a IA"和" nbtstat / a IB"。从IB到IA不存在ping(我想,从IA到IB都没有,尽管没有检查它)。为了鲁棒性,我们应该确保我们的实际应用程序在两个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上带JConsole并使用以下其中一个附加到远程进程:IA:9000或IB:9000或HOSTNAME:9000。他们都工作。但是如果我在第一台PC上运行IA(运行Java2Demo的地方),则根本不可能有附件(既不是IB,也不是HOSTNAME)。 Ping by IB工作,mstsc也是如此(所以IB有连接)。但如果我禁用IB,我会通过IA和HOSTNAME获得附件。

  1. 我只是不知道如何可能,JConsole在这种情况下不会附加在IB上。如果我们不定义java.rmi.server.hostname,AFAIK,JMX使用0.0.0.0并监听两个NIC。如果这与网络本身有关,请向IT部门提出建议。
  2. 我们真正的应用程序有一个解决方法:在第一台PC上它启动2个独立的进程,每个进程只在一个NIC上有JMX,第三个进程将客户端的数据与第三个JMX进行合并。这三个进程分别从.bat文件开始。我真的想改变这个,在两个网卡上只有一个JMX进程;或至少,如果可能的话,用两个JMX启动一个进程,每个进程一个NIC。是吗?
  3. 非常感谢。

1 个答案:

答案 0 :(得分:0)

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