2013-08-20 4 views
1

우리는 포트 8080에서 실행되는 웹 서버로 Embedded Jetty를 사용하며 Jconsole에서 응용 프로그램을 모니터링하려고합니다. JMX에 특정 부두 서버를 시작할 때 우리는 다음과 같은 시스템 속성을 사용하고 있습니다 :서버 및 원격 JMX Bean에 동일한 포트 사용

-Dcom.sun.management.jmxremote.access.file=jmxremote.access 
-Dcom.sun.management.jmxremote.password.file=jmxremote.password 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.authenticate=true 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.port=8081 

JMX와 웹 서버가 두 개의 서로 다른 포트에서 실행되고, 비록를, 포트를 사용하여 JConsole의/JvisualVM를 통해 JMX에 액세스하는 클라이언트를위한 방법이 8080? JMX Proxy가 도움이 될까요? 어떤 방법으로도 가능합니까?

미리 감사드립니다.

에이지

답변

1

약간의 노력없이. 간단히 말해 하나의 포트에 하나의 서버 만있을 수 있습니다 (또는 다른 방법으로는 서버는 포트를 공유 할 수 없습니다).

JMX가 HTTP 요청을 지원하는 경우 동일한 HTTP 서버에서 서블릿으로 실행할 수 있습니다. 하나의 포트 (HTTP 서버에서 사용됨)가 있고 HTTP URL을 사용하면 클라이언트가 JMX 또는 웹 응용 프로그램과 통신할지 여부를 서버가 결정할 수 있습니다.

그러나 JMX는 HTTP 요청을 직접 지원하지 않습니다. Jolokia (see this question)을 시도하거나 클라이언트가 특정 mbeans (그러나 JMX 프로토콜은 제외)를 조회 할 수 있도록 서블릿을 작성할 수 있습니다.

+0

감사 아론를 참조 전송으로 어떤 프로토콜을 사용할 수 있습니다 Connector 있습니다. 사용자가 (Jconsole 사용자는 서비스 : jmx : rmi : /// jndi/rmi : // host : 8080/jmxrmi와 같은 URL을 사용하여 사용자가 사용중인 포트를 볼 수 있도록 서버 내에서 리다이렉션과 같은 작업을 수행합니다. 8080 내부적으로 응용 프로그램이 클라이언트에 대한 실제 포트, 즉 8081을 파악하고 필요합니까? –

+0

내 답변에서 말했듯이 졸리키아는 당신을 위해 그렇게합니다. –