Java Management API (JMX) 是管理 WebLogic Server 的基石。通過 JMX 可在應用服務器內發現管理 Beans (MBeans),並透過它們查詢配置信息、運行時監控數據,甚至修改服務器配置。WebLogic 控制台與其他管理工具均基於此 API 構建。
假設一個包含靜態內容、個性化 JSP、註冊系統、JMS 數據系統、付費系統的應用,JMX 可在以下方面發揮作用:
| 應用層面 | 可監控指標 | 優化價值 |
|---|---|---|
| 靜態內容 | FileServlet 訪問耗時、HEAD 請求比例 | 評估瀏覽器緩存效果、靜態資源服務性能 |
| 動態頁面 | 每個 Servlet 平均處理時間、請求完成數 | 定位慢接口、容量規劃(注意:不含網絡延遲) |
| 註冊/付費系統 | Entity Bean / Stateless Session Bean 狀態 | 優化緩存與連接池大小 |
| JMS 系統 | Topic/Queue 吞吐量、待處理消息數 | 監控消息積壓、擴容判斷 |
| JDBC 連接池 | 連接爭用數、洩漏檢測(含堆棧追蹤) | 判斷是否需增加數據庫授權、修復洩漏 |
配置 MBeans 將 config.xml 中的資源配置映射為運行時對象。部署應用的所有端點、資源均可透過此類 MBeans 訪問。大多數屬性直觀對應;部署單元屬性集合較複雜,封裝於 weblogic.Deployer 中。建議:除查看配置外,謹慎修改運行時屬性(如 JDBC 池參數),重新部署或重啟後多數變更將重置。
只要會使用 JNDI 與閱讀 JavaDoc,操作 MBeans 並不困難。獲取本地 MBeanHome 與 JDBC 連接池:
MBeanHome home = (MBeanHome) new InitialContext().lookup(MBeanHome.LOCAL_JNDI_NAME);
Set pools = home.getMBeansByType("JDBCConnectionPool");
上述獲取的是配置 MBean。若需監控運行時狀態(非配置),只需將類型改為 JDBCConnectionPoolRuntime(添加 "Runtime" 後綴)。運行時 MBean 可提供連接洩漏檢測、堆棧追蹤等關鍵診斷信息。
不想寫 Java 代碼?weblogic.Admin 提供命令行直接訪問 MBean 層級結構:
java weblogic.Admin -username system -password [pwd] -url [url] GET
-pretty -type JDBCConnectionPool
除 MBean 操作外,還支援 Ping 服務器、列表 JNDI、重置連接池、關閉服務器等運維操作。
JMX 提供了統一、強大的監控與管理入口。無論是編寫自定義監控代理、整合第三方 APM 工具,還是日常運維排查,掌握 JMX 在 WebLogic 中的使用模式(配置 vs 運行時 MBean、代碼 vs 命令行)都是核心技能。