2012-04-12 74 views
0

我正在閱讀關於JMX的第一次,並試圖查看它是否可行,以解決我們生產中遇到的問題。JMX遠程部署體系結構

我們有一個架構,不斷打遠程Web服務(由不同的團隊在自己的服務器上託管),並要求從它的數據(我們也緩存從這項服務,但它是一個棘手的問題,其中的緩存ISN非常有效)。

我們希望的能力在代碼中的一個特定點動態地打開/關閉記錄,就在我們打開Web服務之前,我們可以看到我們發送給Web服務的確切URL /查詢服務。如果我們只是盲目設置日誌記錄級別並記錄所有Web服務請求,我們就會有天文數字大的日誌文件。

JMX似乎是解決方案,我們用託管bean來控制本節中的日誌記錄,然後可以通過某個管理器(可能只是基本的HTML適配器)遠程設置該bean的狀態(setLoggingEnabled(boolean)等)。

我的問題是所有部署相關:

  • 如果我寫的MBean接口並實現了一套,以及代理(其中註冊的MBean,並與平臺MBean服務器HTML適配器),做我編譯,包&在我的主Web應用程序(WAR)中部署這些應用程序,還是必須編譯爲自己的應用程序,例如JAR,並且位於應用程序旁邊的JVM上?
  • 我們有Dev,QA,Demo和Prod envrionment;是否有可能有1個單一的HTML適配器指向一個MBean服務器,它有不同的MBean註冊,每個環境1個?如果有一個URL可以到達可以在不同環境中管理bean的地方,那將是非常不錯的。
  • 如果我上面第一個問題的答案是MBean接口,impl和agent全部部署在應用程序內部,那麼是否有可能讓您的JMX應用程序部署在一臺服務器上(比如說Demo),但要從另一臺服務器上監控它?

在此先感謝!

回答

0

你如何包裝的MBean在很大程度上便攜性的問題。這些特定的服務在這個webapp的範圍之外是否有任何實際的用處?如果不是的話,我會簡單地聲明你的web應用程序「JMX Manageable」並將其構建。否則,組裝MBean,將它們放入jar中,將jar放入WEB-INF/lib中,並使用在您的web應用程序中配置的啓動servlet進行初始化web.xml中。

對於單個HTML適配器,是的,這是可能的。將其視爲具有Dev,QA,Demo和Prod MBeanServers,然後一個MBeanServer。您的HTML適配器應呈現主控。然後,您可以使用OpenDMK cascading service在主站中註冊Dev,QA,Demo和Prod的級聯。現在,您將在HTML適配器顯示中看到全部5個MBeanServer的bean。

這會回答你的第三個問題嗎?

0

JMX是一種用於遠程管理您的應用程序的技術,例如當您想要更改配置而不重新啓動是最恰當的用法。

但在你的情況下,我不明白你爲什麼需要JMX。例如,如果您使用Log4j進行日誌記錄,則可以配置文件監視程序並將日誌記錄更改爲儘可能低的級別。即進行調試。這不需要重新啓動,恕我直言,本應該是你的初始設計,即工作arround記錄器和水平。目前,還不清楚你的意思,setLoggingEnable會發生什麼情況。

在任何情況下,託管bean都應該與您的應用程序一起部署,如果您使用的是Spring,那麼您很幸運,因爲它提供了與JMX的非常好的集成,並且可以將Spring bean部署爲託管的bean。

最後,當您連接到進程時,您將看到爲該JVM運行的託管bean。所以我不確定你在第二點的意思。

無論如何,我希望這有助於有點

+0

爲了響應你的第一個項目,不管我們設置log4j的日誌級別是什麼,當它登錄時,它會記錄數十萬條,數百萬條消息 - 太多我們無法處理的,所以日誌級別-based解決方案不適用於我們的情況 – IAmYourFaja 2012-04-12 14:22:59

+0

作爲對第二項的迴應,假設我們在blah.example.com上有一個演示服務器。該服務器正在運行Tomcat,其中部署了我們的WAR文件(Web應用程序)。現在讓我們假設我們將WAR的託管bean配置爲使用HTML適配器,以便我們可以通過Web URL對它們進行監聽/管理。該URL是否會關閉blah.example.com,或者我們可以將JMX的監控設置爲從第二臺服務器提供,如fizz.example.com? – IAmYourFaja 2012-04-12 14:24:59