JMX 서비스 URL을 이해하려고합니다.
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
누군가가 이것을 이해하도록 도울 수 있다면 좋을 것입니다.
감사
답변
이 질문에 대해 이전에 작성한 답변을 재사용합니다 .Java6에서 jconsole을 통해 Tomcat의 MBeanServer에 연결할 수 없습니다 .
완전하지는 않지만 도움이 될 수 있습니다.
‘RMI REGISTRY PORT’에 RMI 레지스트리 포트가 있고 ‘ JMX RMI 에 JMX RMI 서버 포트가 있는’ TARGET MACHINE ‘에서 실행중인 JMX 서버 (별칭’JMX 에이전트 ‘별칭’연결하려는 JVM ‘)가 있다고 가정합니다. 서버 포트’.
노트 :
- RMI 레지스트리는 어디에서 찾을 수 JMX 클라이언트 알려줍니다 JMX RMI 서버 포트를 ; 정보는 키 아래에서 얻을 수 있습니다
jmxrmi
. - RMI 레지스트리 포트 가 JVM을 시작할 때 시스템 속성을 통해 설정되어 일반적으로 알려져있다.
- JMX RMI 서버 포트는 일반적으로 하지 (다른 예방 조치가 취해지지 않은 경우) JVM이 무작위를 선택라고도합니다.
다음 URI는 성공적인 연결로 이어집니다 (테스트 됨).
service:jmx:rmi://<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
이것은 더럽게 보입니다. 잘라 보자.
이 URI는 RFC2609 “서비스 위치 프로토콜 URL”입니다 (글쎄요, 정말 URI 죠?)
다음으로 구성됩니다.
service
-상수jmx:rmi
– 추상 유형 과 URL 체계 로 구성된 서비스 유형jmx
rmi
- 나머지 -SAP (서비스 액세스 프로토콜 사양)
수액 은 다음과 같이 분해됩니다.
//<TARGET_MACHINE>:<JMX_RMI_SERVER_PORT>
-ipsite/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
-URL 부분
잘 알고있는 JMX 클라이언트는 “ipsite”에 연결하여 JMX-over-RMI 교환을 수행합니다. 하지만 해당 포트를 모르는 JMX 클라이언트는 무엇입니까? 인내…
URL 부분 은 다음과 같이 분해됩니다.
/jndi/
-이것은 JMX 클라이언트에게 다음 위치에서 조회 정보를 얻을 수 있음을 알려주는 것 같습니다.rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
-예, 조회 키 아래의 RMI 레지스트리에서 JMX RMI 서버에 대한 정보를 얻습니다.jmxrmi
SLP URL 의 후반부에 의해 제공되는 RMI 레지스트리에 먼저 연락해야하기 때문에 이것은 다소 말을 앞두고 있습니다.
머리를 긁은 후 직관적으로 시도해 봅시다.
service:jmx:rmi://<TARGET_MACHINE>/jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
예, 작동합니다! JMX RMI 서버 포트는 레지스트리에서 잘 얻습니다. 다시 생각하면 대상 시스템 도 레지스트리에서 가져와야합니다.
service:jmx:rmi:///jndi/rmi://<TARGET_MACHINE>:<RMI_REGISTRY_PORT>/jmxrmi
더 좋은 것은 그것도 작동합니다!
참조 :
- http://download.oracle.com/javase/6/docs/api/javax/management/remote/rmi/package-summary.html
- http://download.oracle.com/javase/6/docs/api/javax/management/remote/JMXServiceURL.html
- http://mx4j.sourceforge.net/docs/ch03s04.html
- http://download.oracle.com/javase/6/docs/technotes/guides/management/agent.html#gdevg
- http://www.rfc-editor.org/rfc/rfc2609.txt
답변
설명하기:
service:jmx:rmi://192.168.30.10:1234/jndi/rmi://192.168.30.10:2344/jmxrmi
service:jmx:rmi://192.168.30.10:1234
-IP 주소가 192.168.30.10 인 시스템에 JMX 에이전트가 있음을 나타냅니다. JMX 에이전트는 (TCP) 포트 1234를 사용하여 RMI를 통해 JMX 서비스를 제공합니다 (기본적으로 RMI 서버 역할을 함)./jndi/rmi://192.168.30.10:2344/jmxrmi
-RMI를 통해 JMX 에이전트와 상호 작용하는 RMI 스텁은 IP 주소가 192.168.30.10 인 컴퓨터에서 실행되고 (TCP) 포트 2344를 사용하는 RMI 레지스트리에서 찾을 수 있습니다. RMI 스텁을 가져 오려면 다음을 수행해야합니다. “jmxrmi”바인딩을 찾습니다.
이전 답변은 URL의 두 번째 부분이 JMX RMI 서버의 서버 포트를 얻는 것임을 제안합니다. 그것은 정확하지 않습니다. JMX RMI 서버 포트는 (TCP) 1234이며 URL의 일부입니다. RMI 레지스트리에서 얻는 것은 RMI javax.management.remote.rmi.RMIServerImpl_Stub
를 통해 JMX 에이전트 (MBean 서버)와 통신하는 데 사용할 수 있는 RMI 스텁 ( )입니다.
도움이 되었기를 바랍니다.
답변
javax.management.remote.rmi 에 따르면
이 URL은 이렇게 조립됩니다
service:jmx:rmi://ignoredhost/jndi/rmi://myhost/myname