2012-06-02 6 views
2

우리는 Windows XP와 JDK 1.6.0_07이있는 두 대의 PC (두 가지 네트워크 인터페이스 (NIC) 모두에서 Java의 업데이트가 불가능 함)가 있으며, 첫 번째는 190.1.XXX.XXX (IA로 부름), 두 번째 장치에는 190.2.XXX.XXX (IB)가 있습니다. "ipconfig/all"은 두 NIC에 대해 호스트 이름 HOSTNAME을 가져 오므로 "nbtstat/a IA"및 "nbtstat/a IB"를 수행하십시오. IB에서 IA 로의 핑은 존재하지 않습니다 (IA에서 IB 로의 연결은 아니지만 체크하지 않았습니다). 우리는 실제 응용 프로그램이 견고성을 위해 양쪽 NIC에서 JMX와 함께 작동하는지 확인해야합니다. 그리고 여기서 문제가 시작됩니다. 같은 문제는 다음으로 관찰 할 수있다 :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 또는 호스트 이름 : 9000. 그들은 모두 작동합니다. 하지만 Java2Demo가 실행되는 첫 번째 PC에서 IA를 사용하지 않도록 설정하면 IB 나 HOSTNAME에 의한 연결이 전혀 불가능합니다. IB가 핑 (ping)을하면, mstsc도 마찬가지입니다 (그래서 IB가 연결됩니다). 하지만 IB를 비활성화하면 IA와 HOSTNAME의 첨부 파일을 모두 받게됩니다.

  1. 그런 경우 JConsole이 IB에 부착되지 않을 수도 있습니다. AFAIK, JMX는 0.0.0.0을 사용하고 java.rmi.server.hostname을 정의하지 않으면 두 NIC에서 수신 대기합니다. 이것이 네트워크 자체와 관련이 있다면 IT 부서에 물어볼 내용을 조언 해주십시오.
  2. 실제 응용 프로그램에는 임시 해결책이 있습니다. 첫 번째 PC에서는 하나의 NIC에서만 JMX를 사용하는 2 개의 별도 프로세스를 시작하고 세 번째 JMX와 클라이언트의 데이터를 병합하는 세 번째 프로세스를 시작합니다. 세 가지 프로세스는 .bat 파일에서 개별적으로 시작됩니다. 두 개의 NIC에서 하나의 JMX를 사용하여 하나의 프로세스를 갖는 것을 바꾸고 싶습니다. 또는 가능한 한 두 개의 JMX (하나의 NIC 당 하나씩)로 하나의 프로세스를 시작하십시오. 그렇지?

대단히 감사합니다.

답변

0

JMXConnectorServerFactory를 사용하여 동일한 jvm에서 여러 JMXConnectorServers를 시작할 수 있습니다 (온라인에서는 많은 예제/튜토리얼이 있습니다). 플랫폼 MBeanServer 또는 사용자 정의 MBeanServer를 노출 할 수 있습니다.

+0

실제로 내가 본 것처럼 연결 문제는 IA에 바인딩 된 RMIRegistry 때문입니다. [this] (http://weblogs.java.net/blog/emcmanus/archive/2006/12/multihomed_comp.html)에 따르면이 문제를 해결할 수 있습니다. [that] (https://kr.forums.oracle.com/forums/thread.jspa?messageID=4816956)에 따르면, 2 개의 JVM을 실행해야합니다. 문제를 제대로 점검해야하지만 도움이 될 것입니다. 감사의 말 – igorepst

+0

내 제안을 사용하여, 당신은 2 개의 별도 rmi 레지스트리를 설정하는 것이므로 문제가되지 않을 것입니다. 너는 실제로 이것을 시도 했는가? – jtahlborn

+0

답변 해 주셔서 감사합니다. 그래, 내가 했어. 불행히도, 그것은 작동하지 않았다. 제발, 제 튜토리얼에 대한 링크를 게시 해주세요, 제 도움이 될 수 있습니까? 내가 게시 한 링크에 따르면 다시 한 JVM에서 수행하는 것이 불가능하다고 생각하는 일부가 있습니다. 원한다면 필자가 작성한 참조 응용 프로그램을 게시 할 수 있습니다.이 응용 프로그램은 기본 응용 프로그램과 동일한 방식으로 작동합니다. 고맙습니다! – igorepst