2011-02-01 1 views
3

jconsole을 통해 IPv6 주소가있는 JMX 서비스 URL에 연결하는 데 문제가 있습니다. 나는 jconsole이 ipv6에 연결 중 JMX 서비스 URL

service:jmx:rmi:///jndi/rmi://[fd02:c9e3:a6c0:4306:0:0:0:27]:5500/jmx 

을 시도하고 나는 ..

연결가 성공하지 못했습니다 얻을 몇 가지 배경에 관해서는

,

  • 내가에서 jconsole을 실행하고 내 Windows 7 상자에서 Linux의 jmx 서버에 연결하십시오.
  • jmx 서버는 dual stacked Redhat Linux 상자이며 IPv4 주소를 사용하여 jconsole을 통해 연결할 수 있습니다.
  • 연결하려는 호스트에 2 개의 네트워크 인터페이스가 있으며 그 중 하나는 관리 목적으로 만 사용됩니다.
+0

를 확인하려면 서버에서 인증 클라이언트의 설정 또는 해제를 할 ? – Pace

+0

앱이 실제로 jmx 연결을 위해 IPv6 소켓에서 수신 대기합니까? –

+0

기본 연결을 확인 했습니까? 커맨드 프롬프트에서''ping fd02 : c9e3 : a6c0 : 4306 : 0 : 0 : 0 : 27'을 시도한 다음'telnet fd02 : c9e3 : a6c0 : 4306 : 0 : 0 : 0 : 27 5500'을 시도해보십시오. 열려있는 경우 (그렇지 않은 경우 "연결 거부 됨"이 표시됨). 텔넷은'제어판> 프로그램 및 기능> 윈도우 기능 켜거나 끄기> 텔넷 클라이언트 '를 통해 설치할 수 있습니다. – mpontillo

답변

1

좋아, 아래 조건을 추가하여 서버 호스트 주소를 대괄호로 묶습니다.

if (aHost instanceof Inet4Address) { 
     this.hostAddress = aHost.getHostAddress(); 
    } 
    else if (aHost instanceof Inet6Address) { 
     this.hostAddress = "[" + aHost.getHostAddress() + "]"; 
    } 
    else { 
     throw someException(); 
    } 

.............some other stuff................. 

    registry = LocateRegistry.getRegistry(this.hostAddress, ...); 
사실

은 호스트 주소는 특성 파일의 이름 값 쌍으로서 특정된다. 그러므로 나는 아래처럼 할 수 있었지만 다른 이유로는 효과가 없었습니다.

.properties 파일은 파일

여기서 hostName = [fd02 : c9e3 : a6c0 : 4306 : 0 : 0 : 0 : 27] 그냥

+0

이것은 실제로 틀릴 것입니다 : '[]'는 [RFC2732] [1]에 따라 URL에 필요하며 호스트 이름의 일부가 아닙니다. [1] : http://tools.ietf.org/html/rfc2732 – ankon