您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > WebJMX开源项目应用与进阶
最近公司用到一些关于JMX的使用,在我的BLOG之前介绍过JMX。一个简单的JMX结构由以下几个步骤去完成:①需要一个MBeanServer作为一个容器,去装载你的MBean如下创建:MBeanServerserver=MBeanServerFactory.createMBeanServer(Local);②ObjectName,JDK文档对它的描述是这样的:表示MBean的对象名,或者能够与多个MBean名称相匹配的模式。我们可以从字面上了解到他是干什么的了,就好比一个KEY,当我们的MBean注入MBeanServer后总要有一个标识它,以方便我们以后通过这个KEY去找过我们的MBean.如下创建:ObjectNamemanager=newObjectName(NCS:name=scheduler);③将我们需要进行管理的MBean注册到MBeanServer中,具体如下:server.registerMBean(newIScheduler(),manager);这样就算告一段落了,完成以上步骤后,将实现一个MBeanServer(一个容器)中拥有多个MBean(受管理的类).这就是JMX的基本实现。那么如果要对MBean进行管理当然少不了一些管理机制,如SUN自己提供的HtmlAdaptorServer和Jconsole。HtmlAdaptorServer可以通过WEB对MBean进行管理,Jconsole则是C/S结构的。下面列举一下HtmlAdaptorServer的使用方法:HtmlAdaptorServeradapter=newHtmlAdaptorServer();server.registerMBean(adapter,adapterName);以上代码片段可以看出其实HtmlAdaptorServer也就是个MBean,而这个MBean可访问注册在MBeanServer的其他MBean而已。最后启动HtmlAdaptorServer:adapter.start();完整代码片段://XXX()自定义方法名吧!publicvoidXXX(){try{//createMBSERVERnameisWUBINSERVERListl=MBeanServerFactory.findMBeanServer(null);if(l.size()0){server=(MBeanServer)l.get(0);}else{server=MBeanServerFactory.createMBeanServer(Local);}//RegisterHtmlAdaptorserverportis8082.ObjectNameadapterName=newObjectName(ManagerAgent:name=htmladapter,port=8082);HtmlAdaptorServeradapter=newHtmlAdaptorServer();server.registerMBean(adapter,adapterName);//yourselfobjectnameregister.ObjectNamemanager=newObjectName(NCS:name=scheduler);server.registerMBean(newIScheduler(),manager);ObjectNamemanager2=newObjectName(NCS:name=scheduler2);server.registerMBean(newIScheduler(),manager2);//ObjectNamemanager=newObjectName(NCS:name=scheduler1);//server.registerMBean(newJobManagerMBeanImpl(),manager);adapter.start();System.out.println(start.....);}catch(MalformedObjectNameExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(InstanceAlreadyExistsExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(MBeanRegistrationExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(NotCompliantMBeanExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}catch(NullPointerExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}}当我们访问本地的8082后就可以看到HtmlAdaptorServer所提供的管理界面,但这样的管理界面非常不人性化,(那么丑,怎么见人呢?)那下面我隆重介绍的就是WebJMX!!!他能帮我们解决管理界面的问题,让我们可自编写自己的管理界面。WebJMXTagLibraryProject首先下载WEBJMX=58769&release_id=102257(建议下1.2a版本)那在DOWNLOADING...的时候我来说一下WEBJMX的缺陷。。。(是不是开门一棒,呵呵,这个我必须先告诉大家一声,不然你发现如果WEBJMX并不适合你的工程那下来也没什么意义了。)缺陷:1、WEBJMX在2002年之后就再也没有更新过,最后一个版本是1.3。很遗憾,有可能以后都不会有新的更新,如果你觉得这点无法接受,我可以介绍给你其他--------MX4J,不过这个东西很麻烦,如果有兴趣自己去找找资料吧。2、WEBJMX是中标签,其他就是利用标签库进行VIEW。虽说标签已属于过去式,但不代表没有人用它嘛,象我这样的老人家还在用呢!:)3、WEBJMX部署混乱,资料较缺。这点没有什么办法,所以我建议大家下WEBJMX1.2a版本,那个1.3版本的必须用ANT部署才行,而且里面有很多需要在环境变量里配置的东西,比如TOMCATHOME啊STRUTSHOME啊等等HOME。而且我发现在那ANT脚本里本提到有个JMX.war包在TEMP目录下,结果去寻找也没找到~~~作者的失败之处……4、WEBJMX用的JDK是1.4的,但不要紧也支持1.5好了,废话过后相信你的WEBJMX工程也该下好了,把开始我们的WEBJMX旅程吧,我希望它是轻松愉快的。小女子才疏学浅,如果有错误也希望得到批评,但不要象XX人在我的留言版中一样骂我,说偶的BLOG是垃圾BLOG,即便是垃圾BLOG也麻烦留点所谓的垃圾评语(为虾米垃圾)啊,否则就太不知所为了。我推荐的部署方式并不是用他提供的ANT脚本,而是我们自己的部署手段。我们先用MYECLIPSE创建一个WEB的PROJECT。叫WEBJMX,然后将WEBJMX目录下的org整个目录拷贝到我们的新建的工程的src目录下,然后我们会看到好多红叉叉。不用害怕,这都算少的了……然后导入几个包包,这个包包有MX4J的、STRUTS的、QUICK的还有JMX自己的。由于WEBJMX是使用1.4的JDK。所以当时SUN公司还没有将JMX放到JDK中,.1.5就没事了。导完后差不多如下图那么多。有可能在org部署的时候会遇到enum这是因为WEBJMX使用的JDK是1.4的,而我们现在基本使用1.5以上的版本,只要用户自己随便改改变量名就可以了,别用enum这个变量名。以下展示了两幅图:这是HtmlAdaptorServer的管理界面(여기에서간단한HTML공용영역이JMX참고실시로오는HTMLAdaptor분대에의하여제공한)而这就是WEBJMX实例的管理界面,是不是比上面那个人性化的多呢?(여기에서WbJMX를사용하여JSP에서동일한MBeanServer의전망에의하여표를붙이는)结构(건축술)WEBJMX标签包括这些部分(JMX꼬리표도서관은이분대이루어져있다)*一套JSP标签和描述标签句法的TLD的Java类。(꼬리표통어론의일JSP꼬리표그리고TLD묘사를하는Java클래스의세트)*由一个SERVLET接受页面上表单提交过来的数据。其实在这表单的数据是WebJMX标记修改后生成的。这个表单类似于这样(페이지에SERVLET에의하여모양이복종시키는자료를받아들인다.실제로이모양'후에;s자료는WebJMX표교정생성한다이다.이모양은유사하다이것을좋아하기위하여):jmx:formMBeanname=changeschedulernamembean=mbeaninvoke=rescheduleJoblabel=调用于我们常见的FORM很不同。*通过使用JSP标签和Servlet调用AdapterFactory可以得到MBeanServers。(MBeanServers를얻기위하여가능한용도를통해ServletJSP상표및이동AdapterFactory)结构图:(구조그림):我们可以从上图中看到,WEBJMX是怎么工作的(虽然不是流程图,但其实一目了然!)。用户通过WEB浏览器通过HTTPrequest触发ACTION(JMXACTIONSERVLET)然后通过JMXSerivceAdapter访问MBEANSERVER(能访问MBEANSERVER也以为着能管理SERVER中的MBEAN啦!),那JMXSerivceAdapter其实是种适配器,我们之前介绍过的HTMLAdapter也是适配器。好!下面就开始看看我们的例子来真正认识一下WEBJMX。首先作为一个WEB程序最重要的当然是WEB.xml啦,那我们就从它开始……?xmlversion=1.0encoding=ISO-8859-1?!DOCTYPEweb-appPUBLIC-//SunMicrosystems,Inc.//DTDWebApplication2.2//EN!--registertheJMXActionURLasanapplicationparameter--context-paramparam-namejmxAction/param-nameparam-valuejmxAction/param-valuedescriptionDefaultmappingtotheJMXActionservlet./description/context-param!--JMXActionServletConfiguration--servletservlet-nameagent/servlet-nameservlet-classorg.webjmx.example.AgentServlet/servlet-classinit-paramparam-namelocator0/param-nameparam-valuelocal/param-value/init-paramload-on-startup//servletservletservlet-namejmxAction/servlet-nameservlet-classorg.webjmx.servlet.JMXAction/servlet-classload-on-startup//servletservletservlet-
本文标题:WebJMX开源项目应用与进阶
链接地址:https://www.777doc.com/doc-756711 .html