国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

定義Service4JMX2組件 簡單擴展MX4j

2019-11-18 15:34:13
字體:
來源:轉載
供稿:網友

  前做的服務器框架,已經支持JMXri的JMX實現,但框架直接綁定JMX環境,不是一個良好的設計,當時沒想到好辦法。最近研究MX4j的實現,重構了一下,可以同時支持JMXri和MX4j了,與JMX環境接耦了。
現在又有了新的需求,要求提供HttpServer功能,在Service4Sock的基礎上已經實現了,但是浪費了一個端口資源,需要想辦法與JMX公用才好。繼續研究MX4j的源碼,又有了新的收獲。

已經完成的工作:
* DONE 定義Service4JMX服務器組件,使用JMX技術僅僅為了便于治理;主要使用SPRing作為IoC容器;
* DONE 修改register/unregister;對于"Start:開頭的,自動調用start()/stop()
* DONE 定義Service4JMX2服務器組件,同時支持JMXri和MX4j等多種JMX實現!
* DONE 開頭對應Domain;修改為標志:start=1,stop=1
* DONE 使用JMXri返回Html能直接顯示;而在MX4j中被自動替換;
* DONE 配置:對于MX4j使用processorNameString替換processorName,后者需要ObjectName類型;
* TODO 如何直接顯示某個xml文檔,而非html文檔?(即沒有XSLT解析器)

某個業務日志需求
(1)業務日志需要按天寫到一文件中去,一天一個文件,參照以前日志文件規則
(2)服務器支持一監控端口,用戶可以通過瀏覽器訪問端口獲取數據頁面
(3)用戶可見到的數據內容參考老的業務服務器內容
(4)用戶view由日志內容和一樣式文件組合而成,采用技術為xml(日志內容)+xsl(樣式文件)

我的思路是,擴展HttpAdaptor的實現,定義若干新的Command功能。

代碼
  1. public interface MyHttpAdaptorMBean extends HttpAdaptorMBean, MBeanRegistration {}   
  2. public class MyHttpAdaptor extends HttpAdaptor implements MyHttpAdaptorMBean {}  

研究mx4j.tools.adaptor.http.HttpAdaptor源碼,發現以下幾處:
1,缺省提供的功能項:
代碼
  1. private String[][] defaultCommandProcessors = {   
  2.    {"server", "mx4j.tools.adaptor.http.ServerCommandProcessor"},   
  3.    {"serverbydomain", "mx4j.tools.adaptor.http.ServerByDomainCommandProcessor"},   
  4.    {"mbean", "mx4j.tools.adaptor.http.MBeanCommandProcessor"},   
  5.    {"setattributes", "mx4j.tools.adaptor.http.SetAttributesCommandProcessor"},   
  6.    {"setattribute", "mx4j.tools.adaptor.http.SetAttributeCommandProcessor"},   
  7.    {"getattribute", "mx4j.tools.adaptor.http.GetAttributeCommandProcessor"},   
  8.    {"delete", "mx4j.tools.adaptor.http.DeleteMBeanCommandProcessor"},   
  9.    {"invoke", "mx4j.tools.adaptor.http.InvokeOperationCommandProcessor"},   
  10.    {"create", "mx4j.tools.adaptor.http.CreateMBeanCommandProcessor"},   
  11.    {"constrUCtors", "mx4j.tools.adaptor.http.ConstructorsCommandProcessor"},   
  12.    {"relation", "mx4j.tools.adaptor.http.RelationCommandProcessor"},   
  13.    {"empty", "mx4j.tools.adaptor.http.EmptyCommandProcessor"}};  
2,用戶增加新的頁面:
代碼
  1. public void addCommandProcessor(String path, HttpCommandProcessor processor)   
  2. public void addCommandProcessor(String path, String processorClass)  
3,設置XSLT解析器:
代碼
  1. public void setProcessor(ProcessorMBean processor)   
  2. public void setProcessorClass(String processorClass)   
  3. public void setProcessorNameString(String processorName) throws MalformedObjectNameException   
  4. public void setProcessorName(ObjectName processorName)  

4,defaultCommandProcessors在preRegister()/buildCommands()中被添加到commands中。而commands在run()/getProcessor(String path)中使用,然后由postProcess(httpOut, httpIn, document)來處理,最后生成text/html文檔。因而可能需要修改postProcess,判定對應的xsl文件是否存在。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乌拉特前旗| 名山县| 中阳县| 石楼县| 湛江市| 闻喜县| 镇坪县| 巴林左旗| 阿克苏市| 偏关县| 尉氏县| 甘孜县| 关岭| 东源县| 郑州市| 开江县| 高州市| 融水| 高雄市| 华宁县| 永年县| 靖州| 阜城县| 桂东县| 平泉县| 龙井市| 军事| 胶南市| 邻水| 江陵县| 义马市| 通许县| 霸州市| 康保县| 定日县| 左权县| 滨州市| 汝南县| 鄂托克旗| 镇坪县| 岳池县|