`
zeroliu
  • 浏览: 195152 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

定义Service4JMX2服务器组件,扩展MX4j

阅读更多
以下内容的原文贴在 http://zeroliu.blogdriver.com/zeroliu/1202581.html 上,是在我的论文"轻量级服务器框架"http://zeroliu.blogdriver.com/zeroliu/1190340.html 基础上的进一步扩展和完善。

【虎.无名】以前做的服务器框架,已经支持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 {}

研究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"}};
2,用户增加新的页面:
public void addCommandProcessor(String path, HttpCommandProcessor processor)
public void addCommandProcessor(String path, String processorClass)
3,设置XSLT解析器:
public void setProcessor(ProcessorMBean processor)
public void setProcessorClass(String processorClass)
public void setProcessorNameString(String processorName) throws MalformedObjectNameException
public void setProcessorName(ObjectName processorName)

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";

2,系统缺省访问的 serverbydomain 功能项
   private String defaultPage = "serverbydomain";
分享到:
评论

相关推荐

    mx4j管理jmx的jar与spring结合使用

    4. **配置JMX服务器**:MX4J提供了一个内置的JMX服务器,也可以连接到其他JMX服务器如Java的内置MBeanServer。配置`MBeanServer`实例,并将其注入到`MBeanExporter`中。 5. **暴露JMX端点**:如果需要远程访问,...

    mx4j 开发包,JMX的实现

    mx4j是jmx的开源框架实现,可实现系统开发的微内核管理

    mx4j-jmx.jar

    mx4j-jmx.jar

    jdom.jar;javax.servlet.jar;mx4j.jar

    mx4j.jar包含MX4J的核心组件和服务,使得开发者可以通过HTTP、RMI、JMX协议来暴露和操作应用程序的管理接口。 综上所述,这三个jar文件的组合表明这是一个使用Java进行Web开发的项目,可能涉及到XML处理、动态Web...

    [探究JMX] 4、Spring2.x集成MX4J

    NULL 博文链接:https://luisfigo.iteye.com/blog/703759

    mx4j管理框架

    mx4j是对于jmx的一个具体实现,比较古老了,不知有无人需要

    MX4J-开源

    MX4J是一款强大的开源工具,专门用于实现Java Management Extensions(JMX)标准,该标准定义了管理和监控Java应用程序的方法。JMX允许开发者创建可管理的组件,并通过标准接口与管理系统进行交互,从而实现对应用...

    JMX应用技术架构系统(包括具体开发说明)

    本文档详细阐述了JMX在实际应用中的作用,特别是MX4J在分布式应用监控中的实现方法。 ### 1.2 关键词 JMX,MX4J,分布式监控,管理框架,MBean ### 1.3 参考资料 - Oracle官方JMX文档 - MX4J项目官方网站 - Java...

    JMX 远程服务器信息监控

    JMX 是一种服务导向架构,它定义了管理和监控的接口,允许开发者创建可管理的组件,并将它们集成到Java应用程序中。JMX 包括管理对象(MBeans)、代理(MBeanServer)和连接器(Connector),通过这些元素,可以实现...

    JMX以RMI方式连接的场景示例

    MBean是JMX框架的基本组件,用于提供管理信息和功能。MBean可以是任何Java对象,只要它实现了相关的接口。在我们的示例中,Router类是一个MBean,它提供了addIP、deleteIP和getIPS等方法,用于管理IP访问记录。 ...

    log4j依赖的包(jms-1.1.jar+jmxri-1.2.1.jar+jmxtools-1.2.1.jar)

    总结来说,Log4j依赖的jms-1.1.jar、jmxri-1.2.1.jar和jmxtools-1.2.1.jar这三个包,分别提供了JMS通信能力、JMX的运行时实现和开发工具,共同支持了Log4j的高级功能,如异步日志传输、动态配置和远程监控。...

    JMX-how-to-use.rar_jmx_服务器_远程监控 文件

    本文档“JMX如何使用”深入探讨了如何利用JMX在Java Web环境中进行远程服务器管理与监控。 1. **JMX简介** JMX允许开发者创建和注册管理 Bean(MBeans),这些Bean提供了对应用程序组件的访问接口,从而可以监控和...

    log4j2所需的jar

    这个压缩包“apache-log4j-2.13.2-bin”包含了Log4j2的核心组件,使得开发者可以在他们的应用程序中集成并使用Log4j2。以下是关于Log4j2的一些关键知识点: 1. **日志框架**:Log4j2是Apache软件基金会开发的日志...

    log4j2所需jar包

    这个压缩包包含的两个关键文件——`log4j-api-2.11.1.jar`和`log4j-core-2.11.1.jar`是Log4j2框架的核心组件。 1. **log4j-api-2.11.1.jar**:这个文件提供了Log4j2的API接口。开发者主要通过这些接口来与Log4j2...

    JMX、MXBean学习

    MXBean是JMX中的一个特殊概念,它是标准MBean的扩展,旨在简化跨JVM边界传递数据的过程。MXBean接口定义了特定的命名规则和序列化机制,确保数据能够在不同的Java环境中安全地传输。MXBean的使用通常涉及到JConsole...

    log4j2用户指南

    - **Web 应用环境**:Log4j2 支持在各种 Web 应用服务器上运行。 - **Servlet 容器集成**:可以与 Servlet 容器无缝集成。 - **JSP 日志记录**:支持在 JSP 页面中进行日志记录。 #### 7. 插件 Log4j2 支持广泛的...

    logging-log4j2-log4j-2.15.0-rc2.zip

    Log4j 2支持通过JMX或配置文件实时修改日志级别和配置,无需重启应用,大大提高了运维效率。 6. **可插拔架构**: 其插件架构允许开发者轻松扩展功能,如自定义Appender、Filter或Layout,满足个性化需求。 7. *...

    JMX配置与使用

    JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://your_server_ip:9010/jmxrmi"); Map, Object> env = new HashMap(); // 添加认证信息(如果需要) env.put(JMXConnector.CREDENTIALS, ...

    Jmx实例demo下载

    首先,JMX的核心组件包括MBeans(Managed Beans)、MBean服务器和代理(代理可以是本地或远程)。MBeans是JMX的核心,它们代表了要管理的资源或者服务。你可以将MBean看作是一个具有特定操作和属性的对象,这些操作...

    jmx-1_2_1-ri.jar

    在您提供的信息中,我们关注到三个关键文件:`jmx-1_2_1-ri.jar`、`jmxtools.jar`和`jmx-1_2-api.zip`,它们都是JMX相关的核心组件。 `jmx-1_2_1-ri.jar` 是JMX运行时实现(Runtime Implementation)的jar文件。这...

Global site tag (gtag.js) - Google Analytics