모니터링되는 모든 서블릿이 실행되는 동일한 Tomcat 인스턴스에서 실행되는 JMX 관리자로 서블릿을 구현하고 있습니다. JConsole을 열 때 모니터링되는 서블릿의 데이터를 볼 수 있습니다 . 내 매니저 서블릿 내에서 나는 다음과 같은 코드를 사용하여, 나는 모니터링 서블릿에서 만든 것을 포함, 가능한 표준의 MBean 모두 열거 할 수 있습니다 :MBean을 통해 데이터를 가져 오는 방법
JMXServiceURL url = new JMXServiceURL( "service:jmx:rmi://localhost:1099/jndi/rmi://localhost:1099/jmxrmi");
mConnector = JMXConnectorFactory.connect(url);
mMBSC = mConnector.getMBeanServerConnection();
mObjectName = new ObjectName("com.blahCompany.blah.blah:type=BlahBlah");
// just looking for one specific bean
Set<ObjectName> myMbean = mMBSC.queryNames(mObjectName, null);
if(myMBean.size() == 1) // I know it exists
{
MBeanInfo mbeanInfo = mMBSC.getMBeanInfo(<ObjectName extracted from Set>);
MBeanAttributeInfo[] mbeanAttributeInfos = mbeanInfo.getAttributes();
for(MBeanAttributeInfo attribInfo : mbeanAttributeInfos)
{
if(attribInfo.isReadable())
{
String attribName = attribInfo.getName();
String attribReturnType = attribInfo.getType();
// The data's somewhere ... where????
// In the MBeanInfo?
// In the MBeanAttributeInfo??
}
}
}
을 문제는 나도 몰라 방법에 실제로 데이터을이 MBean에서 추출하십시오. 아무도 묻지 않았기 때문에 대답은 분명해야합니다. 그러나 나는 명백한 것을 간과 할 선물이 있습니다. 귀하의 도움을 감사하게 생각합니다.
Object value = mMBSC.getAttribute(objectName, attributeName);
또는 MBean 인터페이스의 인스턴스를 얻고 당신이 그런 식으로 액세스 할 수 있도록 프록시 객체를 생성 :
빌
mbean 서버에 대한 로컬 액세스와 관련된 내용으로 내 대답이 업데이트되었습니다. 귀하의 질문에서 이해할 수있는 것이 상황에 필요한 것입니다 (URL을 통해 연결할 필요가 없음). 성능이 원격 연결을 사용하는 것보다 낫다고 생각합니다. –