監視対象のサーブレットがすべて実行されている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経由で接続する必要はありません。私はパフォーマンスがリモート接続を使用するよりも良いと思います。 –