- 浏览: 182814 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
grzrt:
zkf55915 写道哥们怎么用啊
好久不用了,就是看帮助资 ...
淘宝MetaQ开源消息队列安装 -
zkf55915:
哥们怎么用啊
淘宝MetaQ开源消息队列安装 -
grzrt:
jinnianshilongnian 写道整这个了?
没有 看 ...
linux内核中链表的实现 -
jinnianshilongnian:
整这个了?
linux内核中链表的实现
[转载]JDMK 基本JMX配置( html adaptor)
- 博客分类:
- JAVA
原文地址:
JDMK 基本JMX配置( html adaptor)
作者:
macg
- JDMK概述
JDMK(Java Dynamic Management Kit)是由JAVA的一个应用程序接口(JAVA
API)和一套开发工具组成的。
JDMK是JMX的第一个商业化产品,它是JMX(Java Management
extensions)的一个实现,它提供了通过Java应用程序来管理Java对象的一个框架。
- HtmlAdaptorServer介绍
HtmlAdaptorServer在jmxtools.jar包中
它其实也是一个MBean,所以也需要注册入MBeanServer
开启HtmlAdaptorServer后,在IE输入:
http://localhost:8092
可以看到注册的MBean,可以进行管理
http://localhost:8092开启的管理页面比较平淡,功能较少,而且是全西文的页面,说实话不太友好.
jmxtools.jar包还有后续的一些类,如:HttpBody,HtmlPage,HttpRequest,HttpResponse等类,可以进行后续的页面开发 ,不过没有太大的开发潜力(它毕竟不是前端框架).
2 将适配器HtmlAdaptorServer作为MBean注册入MBeanServer
3 将被管理对象(不是类是对象)作为MBean注册入MBeanServer
4 启动HtmlAdaptorServer
2。定义一个struts action (或servlet之类的)
3. web.xml装载spring 配置
4.将项目部署到Tomcat后,重启Tomcat
执行步骤2.的action(或servlet)
很多人修改了port口8082,往往不起作用,如下:
原因:
ObjectName("HelloAgent:name=adapter,port=8082")不是用于设port口的,只是ObjectName的参数
设port口的语句是setPort(8091),如果没执行此语句,则port口缺省是8082 ,你在ObjectName()中设什么,都不会影响缺省的8082口
下面是JDMK HtmlAdaptorServer的源代码: 可以看到构造方法里直接设的就是8082
解决:
可以看到注册的MBean,可以进行管理
http://localhost:8092开启的管理页面比较平淡,功能较少,而且是全西文的页面,说实话不太友好.
jmxtools.jar包还有后续的一些类,如:HttpBody,HtmlPage,HttpRequest,HttpResponse等类,可以进行后续的页面开发 ,不过没有太大的开发潜力(它毕竟不是前端框架).
- JDMK HtmlAdaptor 配置步骤:
2 将适配器HtmlAdaptorServer作为MBean注册入MBeanServer
3 将被管理对象(不是类是对象)作为MBean注册入MBeanServer
4 启动HtmlAdaptorServer
- 简单的application下的JDMK HtmlAdaptorServer例子
import com.sun.jdmk.comm.HtmlAdaptorServer; import javax.management.Attribute; import javax.management.MBeanServer; import javax.management.MBeanServerFactory; import javax.management.ObjectName; public class JmxHttpAdaptors { // 为HttpAdaptor MBean private int port = 8092; private String host = "localhost"; public void start() throws JMException, MalformedURLException { // creates new server MBeanServer server = MBeanServerFactory.createMBeanServer("test"); // 将HttpAdaptor 对象注册入MBean ObjectName serverName = new ObjectName("Http:name=HttpAdaptor"); HtmlAdaptorServer adaptor = new HtmlAdaptorServer(); server.registerMBean(adaptor, serverName); // 设HttpAdaptor MBean(即serverName)的attributes if (port > 0) { server.setAttribute(serverName, new Attribute("Port", new Integer(port))); } else { System.out.println("Incorrect port value " + port); } // 下面是一些测试的MBean // 测试类TestClass代码这里不再给出(无非就是一些简单的POJO 加减乘除之类的方法,自己编就是) TestClass test1 = new TestClass("t1", new URL("http://mx4j.sourceforge.net")); TestClass test2 = new TestClass("t1", new URL("http://www.sourceforge.net/projects/mx4j")); server.registerMBean(test1, new ObjectName("Test:name=test1")); server.registerMBean(test2, new ObjectName("Test:name=test2")); // 执行HttpAdaptor MBean(即serverName)的start()方法 server.invoke(serverName, "start", null, null); } public static void main(String[] str) throws Exception { JmxHttpAdaptors thisAdaptor = new JmxHttpAdaptors(); thisAdaptor.start(); } |
执行程序,查看运行效果 D:Documents and Settingsmac>netstat -an Active Connections Proto Local Address Foreign Address State TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING TCP 0.0.0.0:6059 0.0.0.0:0 LISTENING TCP 0.0.0.0:6648 0.0.0.0:0 LISTENING TCP 0.0.0.0:8092 0.0.0.0:0 LISTENING |
在IE输入: http://localhost:8092 可以看到注册的MBean,可以进行管理 |
- spring 下的 JDMK HtmlAdaptorServer
<!--
1.定义自己的bean --> <bean id="hello" class="com.machome.bean.Hello" /> <!-- JMX configuration --> <!-- 2.创建一个mbeanServer bean--> <!-- 如果你的spring是应用在容器中,则不需要此步骤,此步骤用于单独建立独立的MBeanServer中 <bean id="mbeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean"> </bean> --> <!-- 3.定义assembler bean ,装配bean MetadataMBeanInfoAssembler是AutodetectCapableMBeanInfoAssembler 唯一实现 spring文档中有专门介绍AutodetectCapableMBeanInfoAssembler的章节 --> <bean id="assembler" class="org.springframework.jmx.export.assembler.MetadataMBeanInfoAssembler"> <!-- 注入下面定义的jmxAttributeSource--> <property name="attributeSource" ref="jmxAttributeSource"/> </bean> <!-- 4.定义 解释mbean中Annotation的bean--> <bean id="jmxAttributeSource" class="org.springframework.jmx.export.annotation.AnnotationJmxAttributeSource"/> <!-- 5. 定义JDMK的HtmlAdaptorServer bean --> <bean id="httpJDMKAdaptor" class="com.sun.jdmk.comm.HtmlAdaptorServer " > <property name="port"> <value>8098</value> </property> </bean> <!-- 6.定义MBeanExporter bean, 这是spring jmx最核心的类 --> <bean id="mBeanExporter" class="org.springframework.jmx.export.MBeanExporter" lazy-init="false" > <!-- 注入上面定义的assembler 两个bean注入--> <property name="assembler" ref="assembler"/> <!-- 如果上面步骤2.你单独定义一个mbeanServer,这里需要指定,否则export bean缺省是去寻找runtime环境内的MBeanserver(通常是容器的MBeanServer) <property name="server" ref="mbeanServer"/> --> <!-- 将1.里面定义的mbean注册到mBeanExporter bean中 --> <property name="beans"> <map> <entry key="mbean:name=hello" value-ref="hello"/> <!-- 将JDMK 定义的HtmlAdaptorServer的bean加入mbean map中 --> <entry key="MyAgent:name=jdmkadapter,port=8098" value-ref="httpJDMKAdaptor"/> </map> </property> </bean> |
public class SpringJMXAction extends ActionSupport { @Autowired private HtmlAdaptorServer httpJDMKAdaptor; @Override public String execute() throws Exception { return SUCCESS; } public String JDMKstart() throws Exception { message = "启动JDMK adaptor"; httpJDMKAdaptor.start(); return SUCCESS; } public String JDMKstop() throws Exception { message = "停止JDMK adaptor"; httpJDMKAdaptor.stop(); return SUCCESS; } } |
<!-- #####################
初始化spring容器
###########--> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:ssh-mysql.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> |
执行步骤2.的action(或servlet)
执行程序,查看运行效果 D:Documents and Settingsmac>netstat -an Active Connections Proto Local Address Foreign Address State TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING TCP 0.0.0.0:6059 0.0.0.0:0 LISTENING TCP 0.0.0.0:6648 0.0.0.0:0 LISTENING TCP 0.0.0.0:8098 0.0.0.0:0 LISTENING |
在IE输入: http://localhost:8098 可以看到注册的MBean,可以进行管理 |
- 网上有很多例子,其实比较容易造成误解
HtmlAdaptorServer adaptor = new HtmlAdaptorServer(); ObjectName adapterName = new ObjectName("HelloAgent:name=adapter,port=8082"); server.registerMBean(adapter, adapterName); adapter.start(); |
HtmlAdaptorServer adaptor = new HtmlAdaptorServer(); ObjectName adapterName = new ObjectName("HelloAgent:name=adapter,port=8091"); server.registerMBean(adapter, adapterName); adapter.start(); |
访问http://localhost:8091, 访问失败 |
ObjectName("HelloAgent:name=adapter,port=8082")不是用于设port口的,只是ObjectName的参数
设port口的语句是setPort(8091),如果没执行此语句,则port口缺省是8082 ,你在ObjectName()中设什么,都不会影响缺省的8082口
下面是JDMK HtmlAdaptorServer的源代码: 可以看到构造方法里直接设的就是8082
public class
HtmlAdaptorServer extends CommunicatorServer
implements MBeanRegistration, DynamicMBean { public HtmlAdaptorServer() { this(8082); } |
HtmlAdaptorServer adaptor = new HtmlAdaptorServer(); ObjectName adapterName = new ObjectName("HelloAgent:name=adapter,port=8091"); server.registerMBean(adapter, adapterName); adapter.setPort(8091); adapter.start(); |
- 给htmlAdaptor 加入认证
import
com.sun.jdmk.comm.AuthInfo;
import com.sun.jdmk.comm.HtmlAdaptorServer; server = MBeanServerFactory.createMBeanServer(); html = new HtmlAdaptorServer(); ObjectName html_name = new ObjectName("Adaptor:name=html,port="+PORT); server.registerMBean(html, html_name); html.setPort(PORT); AuthInfo login = new AuthInfo(); login.setLogin("admin"); login.setPassword("11111"); html.addUserAuthenticationInfo(login); |
这样在访问http://localhost:8092的时候,会弹出JDMK login窗口 |
发表评论
-
项目代码质量控制
2014-10-20 17:15 785在以后的开发项目时可以适当使用工具进行程序检查: 1、F ... -
WorkbookFactory 找不到
2013-11-08 10:46 921在最近的POI版本中,poi-3.9.jar包中找不到Work ... -
记一次JVM GC日志分析
2013-03-08 21:36 1712这几天在准备升级JDK版本到1.6,对目前线上JVM(版 ... -
Eclipse 相同变量的高亮 及颜色
2013-02-18 17:26 1587在Eclipse/MyEclipse中如果不小心把变量的高 ... -
java jstack dump 线程 介绍 解释
2013-02-05 15:52 1172hi,all: 最近抽时间把JVM运行 ... -
JAVA中的继承分析
2012-12-27 11:43 5082为什么写这篇博客,之前对继承的理解知识大体理论上,最近 ... -
JVM学习之:虚拟机中的运行时栈帧总结(二)
2012-12-12 19:46 797在 JVM学习之:虚拟机 ... -
JVM学习之:虚拟机中的运行时栈帧总结(一)
2012-12-12 19:45 818每 个人都知道,各种各样的动画视频,都是由一帧一帧图片连 ... -
JAVA字符串占位符
2012-12-06 08:24 3177包 java.text.MessageFormat java ... -
copy项目是容易出现的错误--webAppRootKey错误
2012-12-05 21:18 688Tomcat 发布多个项目时抛的webAppRootKey错误 ... -
web.xml配置总结
2012-12-05 20:50 630一、关于webAppRootKey的定义 默 ... -
spring组件扫描<context:component-scan/>使用详解
2012-12-05 19:14 697关于spring自动检测组件的使用方式网上太多了,而且也不 ... -
spring组件扫描<context:component-scan/>使用详解 (
2012-11-28 08:57 666关于spring自动检测组件的使用方式网上太多了,而且也不 ... -
static class 静态类(Java)
2012-11-23 20:20 816一般情况下是不可以用static 修饰类的。 ... -
java jvm 调优实战
2012-11-13 10:01 7701.eclipse 打印gc日志 eclipse根目录 ... -
Zookeeper的一致性协议:Zab
2012-11-04 16:14 1165Zookeeper使用了一种称为 ... -
浅谈java内存模型
2012-10-30 19:29 759不同的平台,内存模 ... -
JVM分代垃圾回收策略的基础概念
2012-08-15 12:43 663由于不同对象的生命周期不一样,因此在JVM的垃圾回收策略中有分 ... -
bloom filter 的Java 版
2012-07-26 21:50 847属于转贴:http://www.cnblo ... -
JAVA 条件表达式 陷阱
2012-07-25 18:34 1237代码: Map<String, Integer& ...
相关推荐
JMX 1.2.1 Reference Implementation(重点) Include com.sun.jdmk.comm.HtmlAdaptorServer class http://www.sun.com/software/jdmk/ Downloads, sun-jdmk-runtime-5.1-b34.2.zip/SUNWjdmk/5.1/lib/jdmkrt.jar
为什么JMX那么受欢迎,JMX到底有那些优势只得人们去学习和理解,本文从JMX的基本架构、hellowold jmx以及spring对JMX的支持讲起,希望大家能通过本文对JMX有个基础的认识,并能通过本文为今后学习JMX打个基础
jmx_remote-1_0_1_03-ri.zip jmx-1_2_1-ri.zip 这两个包也是现在网上流行的例子所要求的两个包,即 1、jmx-1_2_1-bin 2、jmxremote-1_0_1-bin 例子网址:http://www.moon-soft.com/doc/39932.htm 其中jmx-1_2_1-ri....
jdmk 5.1 支持部署网管系统等功能。
HtmlAdaptorServer com.sun.jdmk.comm.HtmlAdaptorServer JMXjar包 (提供的就是这个jar包,直接引用就可以了) 很多jmx教程的例子里面都会用到com.sun.jdmk.comm.HtmlAdaptorServer这个类,不知道怎么去找到,...
jdmk51_02-allplatforms
maven编译时报找不到这两个jar文件,发现已经无法从网站...Could not resolve dependencies for project ****:jar:0.0.1-SNAPSHOT: The following artifacts could not be resolved: com.sun.jdmk:jmxtools:jar:1.2.1, ...
maven编译时报找不到这两个jar文件,发现已经无法从网站...Could not resolve dependencies for project ****:jar:0.0.1-SNAPSHOT: The following artifacts could not be resolved: com.sun.jdmk:jmxtools:jar:1.2.1, ...
Java Dynamic Management Kit (Java DMK) is a Java technology based toolkit that allows developers to rapidly create smart agents based on the Java Management Extensions (JMX) specification. The power ...
HtmlAdaptorServer com.sun.jdmk.comm.HtmlAdaptorServer JMXjar包 (提供的就是这个jar包,直接引用就可以了) 很多jmx教程的例子里面都会用到com.sun.jdmk.comm.HtmlAdaptorServer这个类,不知道怎么去找到,其实...
开发jmx相关应用时用到的jar包,包含 com.sun.jdmk.comm.HtmlAdaptorServer对应的jar包
com.sun.jdmk.comm.HtmlAdaptorServer对应jar包,开发jmx相关应用时用到的jar包
缺少jar包 Description Resource Path Location Type Missing artifact com.sun.jdmk:jmxtools:jar:1.2.1 pom.xml Maven Dependency Problem jmxtools-1.2.1.jar
JDMK的MIB库如何生成等文档资料描述!
com.sun.jdmk.comm.HtmlAdaptorServer jmx学习用的必备包,在网上找了好久,终于找到了。
包含 com.sun.jdmk.comm.HtmlAdaptorServer,很多jmx教程的例子需要引用
Sun JDMK所支持的中兴通讯客户设备软硬件监控与管理系统建设项目,最终提升了中兴通讯的整体业务管理水平,并增强了中兴通讯的客户服务能力与产品的整体竞争能力。同时,在项目的执行过程中,Sun公司技术与咨询部门...
安装JMX依赖项 从下载Java管理扩展(JMX)1.2.1 解压缩jmx-1_2_1-ri.zip cd jmx-1_2_1-bin / lib mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=jmxtools.jar -DgroupId=...
com.sun.server.os.portlet.container_1.0.0.jar eclipse portlet container plugin