2012-06-15 85 views
2

我是一名正在進行實習的計算機科學學生。我的老闆要求我編寫一個簡單的工具來監視Tomcat服務器。我剛開始這個項目,所以我基本上只是在玩耍,看看事情是如何運作的。我想創建一個簡單的jsp頁面來顯示一些基本的JMX查詢的結果。我正在使用Eclipse IDE。有人可以給我一些提示開始嗎?使用JMX監視Tomcat服務器的簡單工具

+1

堆棧溢出不是研究助理: http://meta.stackexchange.com/a/128553/152851 – Gray

+0

這是一個真正的使用應用程序,或只是一個測試,看看你有多好?如果不是測試,向您的老闆顯示JConsole ;-) – npe

回答

5

你絕對不必在這裏重新發明輪子。您可以從您的JDK附帶的jconsole開始:只要運行jconsole [pid]jconsole就會連接到(本地)正在運行的進程,並讓您通過JMX觀察所有內容。

如果您想遠程訪問JMX公開的信息,您可以使用Tomcat的manager webapp以及包含的jmxproxy servlet,它允許您遠程執行簡單的查詢來獲取(並設置)JMX屬性。

還有其他更全功能的項目,如Jolokia(http://www.jolokia.org/),做類似的事情。

假設您正在使用類似Nagios的東西來自動觀察Tomcat實例,您肯定不希望這樣做,它會啓動JVM並創建遠程(甚至本地)JMX連接來檢查單個JMX財產(然後做5次觀察5種不同的屬性,然後每5分鐘或1分鐘或5次做5次樣本)。相反,您可能想要使用上述的代理服務器。

我們已經成功地將Nagios與Tomcat管理器的jmxproxy servlet耦合在一起。它可能會在相當長一段時間內滿足您的需求。

+0

該OP指出他正在嘗試創建一個JSP頁面來顯示JMX輸出。 'jconsole'不能這樣做,'jmxproxy'只顯示本地JMX信息,如果我正確地閱讀文檔,則不是遠程的。 – Gray

+0

@Gray我提到jconsole,因爲它功能相當全面。如果OP想寫一個「簡單」的JSP(哈哈),他會感到驚訝,因爲現在這個任務會非常簡單。 'jmxproxy'在Tomcat內部運行併爲JMX提供HTTP接口。因此,您可以遠程查詢本地獲取的JMX屬性。 –

+0

哦,這對任務夥計的非簡單性毫無疑問。 :-) – Gray

1

就編程方式使用JMX而言,有許多客戶端類。這是我的SimpleJMX project。有了它,你可以使用JmxClient對象連接和查詢遠程JVM:

JmxClient client = new JmxClient("remote.sever.name", remotePortNumber); 
Set<ObjectName> objectNameSet = client.getBeanNames(); 
... 

這裏是javadocs for JmxClient