2

職場では、WindowsXPとJDK1.6.0_07(現在Javaの更新はできません)を備えた2台のPCがあり、両方とも2つのネットワークインターフェイス(NIC)を備えており、最初のPCは190.1.XXX.XXXの形式のIPを持っています(それはIA)であり、2番目は190.2.XXX.XXX(IB)です。「ipconfig/all」は両方のNICのホスト名HOSTNAMEをもたらすので、「nbtstat/aIA」と「nbtstat/aIB」も同様です。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

2台目のPCで、JConsoleを持ってきて、IA:9000またはIB:9000またはHOSTNAME:9000のいずれかを使用してリモートプロセスに接続します。それらはすべて機能します。しかし、最初のPC(Java2Demoが実行されている)でIAを無効にすると、接続はまったくできなくなります(IBでもHOSTNAMEでも)。IBによるpingは機能するため、mstscも機能します(IBによる接続があります)。しかし、IBを無効にすると、IAとHOSTNAMEの両方で添付ファイルを取得します。

  1. そのような場合、JConsoleがIBに接続しないということは、どうして可能かわかりません。AFAIK、java.rmi.server.hostnameを定義しない場合、JMXは0.0.0.0を使用し、両方のNICでリッスンします。これがネットワーク自体に関係している場合は、IT部門に何を依頼するかをアドバイスしてください。
  2. 実際のアプリケーションには回避策があります。最初のPCで、それぞれが1つのNICにのみJMXを持つ2つの別個のプロセスを開始し、3番目のプロセスがクライアントからのデータを3番目のJMXとマージします。3つのプロセスは、.batファイルから個別に開始されます。私は本当にこれを変更したいと思います。両方のNICに1つのJMXを持つ1つのプロセスがあります。または、可能であれば、少なくとも、NICごとに1つずつ、2つのJMXで1つのプロセスを開始します。それは...ですか?

どうもありがとうございます。

4

1 に答える 1

0

JMXConnectorServerFactory を使用して、同じ jvm で複数の JMXConnectorServers を開始できます (多くの例/チュートリアルがオンラインにあります)。プラットフォーム MBeanServer または独自のカスタム MBeanServer を公開できます。

于 2012-06-02T19:41:10.887 に答える