Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7249264
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68080
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:49:51

下载本文示例代码
前做的服务器框架,已经支持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功能。 代码 public interface MyHttpAdaptorMBean extends HttpAdaptorMBean, MBeanRegistration {} public class MyHttpAdaptor extends HttpAdaptor implements MyHttpAdaptorMBean {} render_code(); 研究mx4j.tools.adaptor.http.HttpAdaptor源码,发现以下几处: 1,缺省提供的功能项: 代码 private String[][] defaultCommandProcessors = { {"server", "mx4j.tools.adaptor.http.ServerCommandProcessor"}, {"serverbydomain", "mx4j.tools.adaptor.http.ServerByDomainCommandProcessor"}, {"mbean", "mx4j.tools.adaptor.http.MBeanCommandProcessor"}, {"setattributes", "mx4j.tools.adaptor.http.SetAttributesCommandProcessor"}, {"setattribute", "mx4j.tools.adaptor.http.SetAttributeCommandProcessor"}, {"getattribute", "mx4j.tools.adaptor.http.GetAttributeCommandProcessor"}, {"delete", "mx4j.tools.adaptor.http.DeleteMBeanCommandProcessor"}, {"invoke", "mx4j.tools.adaptor.http.InvokeOperationCommandProcessor"}, {"create", "mx4j.tools.adaptor.http.CreateMBeanCommandProcessor"}, {"constructors", "mx4j.tools.adaptor.http.ConstructorsCommandProcessor"}, {"relation", "mx4j.tools.adaptor.http.RelationCommandProcessor"}, {"empty", "mx4j.tools.adaptor.http.EmptyCommandProcessor"}}; render_code(); 2,用户增加新的页面: 代码 public void addCommandProcessor(String path, HttpCommandProcessor processor) public void addCommandProcessor(String path, String processorClass) render_code(); 3,设置XSLT解析器: 代码 public void setProcessor(ProcessorMBean processor) public void setProcessorClass(String processorClass) public void setProcessorNameString(String processorName) throws MalformedObjectNameException public void setProcessorName(ObjectName processorName) render_code(); 4,defaultCommandProcessors在preRegister()/buildCommands()中被添加到commands中。而commands在run()/getProcessor(String path)中使用,然后由postProcess(httpOut, httpIn, document)来处理,最后生成text/html文档。因而可能需要修改postProcess,判断对应的xsl文件是否存在。 研究mx4j.tools.adaptor.http.XSLTProcessor源码,发现以下几处: 1,在mx4j-3.0.1\src\tools\mx4j\tools\adaptor\http\xsl目录下有很多xsl文件,用于解析xml的。 代码 private String path = "mx4j/tools/adaptor/http/xsl"; render_code(); 2,系统缺省访问的 serverbydomain 功能项 代码 private String defaultPage = "serverbydomain"; render_code(); 阅读关于 JAVA 组件 的全部文章 前做的服务器框架,已经支持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功能。 代码 public interface MyHttpAdaptorMBean extends HttpAdaptorMBean, MBeanRegistration {} public class MyHttpAdaptor extends HttpAdaptor implements MyHttpAdaptorMBean {} render_code(); 研究mx4j.tools.adaptor.http.HttpAdaptor源码,发现以下几处: 1,缺省提供的功能项: 代码 private String[][] defaultCommandProcessors = { {"server", "mx4j.tools.adaptor.http.ServerCommandProcessor"}, {"serverbydomain", "mx4j.tools.adaptor.http.ServerByDomainCommandProcessor"}, {"mbean", "mx4j.tools.adaptor.http.MBeanCommandProcessor"}, {"setattributes", "mx4j.tools.adaptor.http.SetAttributesCommandProcessor"}, {"setattribute", "mx4j.tools.adaptor.http.SetAttributeCommandProcessor"}, {"getattribute", "mx4j.tools.adaptor.http.GetAttributeCommandProcessor"}, {"delete", "mx4j.tools.adaptor.http.DeleteMBeanCommandProcessor"}, {"invoke", "mx4j.tools.adaptor.http.InvokeOperationCommandProcessor"}, {"create", "mx4j.tools.adaptor.http.CreateMBeanCommandProcessor"}, {"constructors", "mx4j.tools.adaptor.http.ConstructorsCommandProcessor"}, {"relation", "mx4j.tools.adaptor.http.RelationCommandProcessor"}, {"empty", "mx4j.tools.adaptor.http.EmptyCommandProcessor"}}; render_code(); 2,用户增加新的页面: 代码 public void addCommandProcessor(String path, HttpCommandProcessor processor) public void addCommandProcessor(String path, String processorClass) render_code(); 3,设置XSLT解析器: 代码 public void setProcessor(ProcessorMBean processor) public void setProcessorClass(String processorClass) public void setProcessorNameString(String processorName) throws MalformedObjectNameException public void setProcessorName(ObjectName processorName) render_code(); 4,defaultCommandProcessors在preRegister()/buildCommands()中被添加到commands中。而commands在run()/getProcessor(String path)中使用,然后由postProcess(httpOut, httpIn, document)来处理,最后生成text/html文档。因而可能需要修改postProcess,判断对应的xsl文件是否存在。 研究mx4j.tools.adaptor.http.XSLTProcessor源码,发现以下几处: 1,在mx4j-3.0.1\src\tools\mx4j\tools\adaptor\http\xsl目录下有很多xsl文件,用于解析xml的。 代码 private String path = "mx4j/tools/adaptor/http/xsl"; render_code(); 2,系统缺省访问的 serverbydomain 功能项 代码 private String defaultPage = "serverbydomain"; render_code(); 阅读关于 JAVA 组件 的全部文章 下载本文示例代码


定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j定义Service4JMX2组件 简单扩展MX4j
阅读(674) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~