以Glassfish 3.1.2爲例。並且這裏名爲「NewWebService」的Web服務是一個代碼抽取,用於檢索該Web服務的請求數。
public static void showRequestCount(MBeanServerConnection mbs) throws Exception {
ObjectName on = new ObjectName("amx:pp=/mon/server-mon[server],type=servlet-instance-mon,name=WebApplication1/server/NewWebService");
final Set<ObjectInstance> mBeans = mbs.queryMBeans(on, null);
for (ObjectInstance mbean : mBeans) {
System.out.println("mbean: " + mbean);
final MBeanInfo info = mbs.getMBeanInfo(on);
final MBeanAttributeInfo[] attributes = info.getAttributes();
for (int i = 0; i < attributes.length; i++) {
MBeanAttributeInfo mBeanAttributeInfo = attributes[i];
if (mBeanAttributeInfo.getName().equals("requestcount")) {
final Object attribute = mbs.getAttribute(on, mBeanAttributeInfo.getName());
CompositeDataSupport cds = (CompositeDataSupport) attribute;
final Object requestCount = cds.get("count");
System.out.println("Object name: " + on.getKeyProperty("name"));
System.out.println("Request count: " + requestCount);
}
}
}
}
結果是:
mbean: servlet-instance-mon[amx:pp=/mon/server-mon[server],type=servlet-instance-mon,name=WebApplication1/server/NewWebService]
Object name: WebApplication1/server/NewWebService
Request count: 18
請注意,該MBean和/或它的屬性的對象名可根據您的Glassfish的版本有所不同。
您可以通過JMX API使用Glassfish MBean。但是,如果您處於集羣場景中,則需要在應用程序級別解決這個問題,或者有一個監視工具來爲您處理。 –
我幾乎概括了MBeans中的所有objectNames,但我只找到webservices的名稱列表,但調用計數。如果你知道地址的調用計數的objectName,它將不勝感激。 –