2012-12-25 30 views
1

如何統計部署在Glassfish 3.1上的Webservices的調用? 其實我可以得到我想要的控制檯命令?如下如何統計部署在Glassfish 3.1上的Webservices的調用

asadmin get -m "server.applications.hello-jaxws2*" server.applications.hello-jaxws2.2.server.Hello.requestcount-count = 14 

但我想知道是否有一種方法獲得Web服務的調用計數編程方式?

+0

您可以通過JMX API使用Glassfish MBean。但是,如果您處於集羣場景中,則需要在應用程序級別解決這個問題,或者有一個監視工具來爲您處理。 –

+0

我幾乎概括了MBeans中的所有objectNames,但我只找到webservices的名稱列表,但調用計數。如果你知道地址的調用計數的objectName,它將不勝感激。 –

回答

2

以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的版本有所不同。

+0

我無法使用amx:pp =/mon/server-mon [server],type = servlet-instance-mon,name = *獲取ObjectNames的列表,但我通過amx:pp =/mon/server獲取對象名稱列表-mon [服務器],類型= WSEndpoint,名稱= *。什麼可能是錯的? –

+0

這是一個新問題:使用它們的對象名稱獲取Glassfish MBean的列表。 –

+0

我正在使用amx:pp =/mon/server-mon [server],type = servlet-instance-mon,name = CalculatorApp/server/CalculatorWS作爲對象名稱,我從jconsole中複製了這個名稱(servlet-instance-星期一)。但是我得到最終的Set mBeans EMPTY –

相關問題