国产探花免费观看_亚洲丰满少妇自慰呻吟_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文件是否存在。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 揭西县| 兴化市| 恩平市| 鸡泽县| 城步| 盐津县| 鲜城| 罗源县| 天津市| 法库县| 光泽县| 台北市| 页游| 泌阳县| 磐安县| 靖安县| 海城市| 蓬溪县| 呼玛县| 开平市| 札达县| 区。| 宿州市| 册亨县| 红桥区| 山东省| 厦门市| 霍林郭勒市| 定兴县| 湾仔区| 岐山县| 胶南市| 朔州市| 察雅县| 丰县| 瓮安县| 张家口市| 天水市| 根河市| 陆河县| 桓台县|