最近在学习Tomcat 的源代码,发现很多地方都用到了MBean来进行管理,自己实践了下,碰到一些问题
1、静态MBean的属性和方法什么情况下可以在jconsle中看到?public class MessageBean implements MessageBeanMBean {
public String provider = "CATTSOFT";
public String msg = ":this is a msg from 44 "+provider;
public void sendMsg() {
System.out.println(this.msg);
} public String getMsg() {
return this.msg;
}}
在jconsole中只能看到msg和sendMsg,这跟 方法和属性 的可见性有关么?2、动态MBean属性和方法的可见性Tomcat中的engine、host和congtext都是在Registry工具类中注册的,我看了下是DynamicMBean,但在jconsole中也不是全都可以看到BaseModelMBean(实现了DynamicMBean、ModelMBeanNotificationBroadcaster)或HostConfig的全部属性和方法
public class BaseModelMBean implements DynamicMBean, MBeanRegistration, ModelMBeanNotificationBroadcaster {...}
//此处param ‘bean’= HostConfig
public void registerComponent(Object bean, ObjectName oname, String type)
throws Exception
{
if( log.isDebugEnabled() ) {
log.debug( "Managed= "+ oname);
} if( bean ==null ) {
log.error("Null component " + oname );
return;
} try {
if( type==null ) {
type=bean.getClass().getName();
} ManagedBean managed = findManagedBean(bean.getClass(), type); // The real mbean is created and registered
DynamicMBean mbean = managed.createMBean(bean); if( getMBeanServer().isRegistered( oname )) {
if( log.isDebugEnabled()) {
log.debug("Unregistering existing component " + oname );
}
getMBeanServer().unregisterMBean( oname );
} getMBeanServer().registerMBean( mbean, oname);
} catch( Exception ex) {
log.error("Error registering " + oname, ex );
throw ex;
}
}
1、静态MBean的属性和方法什么情况下可以在jconsle中看到?public class MessageBean implements MessageBeanMBean {
public String provider = "CATTSOFT";
public String msg = ":this is a msg from 44 "+provider;
public void sendMsg() {
System.out.println(this.msg);
} public String getMsg() {
return this.msg;
}}
在jconsole中只能看到msg和sendMsg,这跟 方法和属性 的可见性有关么?2、动态MBean属性和方法的可见性Tomcat中的engine、host和congtext都是在Registry工具类中注册的,我看了下是DynamicMBean,但在jconsole中也不是全都可以看到BaseModelMBean(实现了DynamicMBean、ModelMBeanNotificationBroadcaster)或HostConfig的全部属性和方法
public class BaseModelMBean implements DynamicMBean, MBeanRegistration, ModelMBeanNotificationBroadcaster {...}
//此处param ‘bean’= HostConfig
public void registerComponent(Object bean, ObjectName oname, String type)
throws Exception
{
if( log.isDebugEnabled() ) {
log.debug( "Managed= "+ oname);
} if( bean ==null ) {
log.error("Null component " + oname );
return;
} try {
if( type==null ) {
type=bean.getClass().getName();
} ManagedBean managed = findManagedBean(bean.getClass(), type); // The real mbean is created and registered
DynamicMBean mbean = managed.createMBean(bean); if( getMBeanServer().isRegistered( oname )) {
if( log.isDebugEnabled()) {
log.debug("Unregistering existing component " + oname );
}
getMBeanServer().unregisterMBean( oname );
} getMBeanServer().registerMBean( mbean, oname);
} catch( Exception ex) {
log.error("Error registering " + oname, ex );
throw ex;
}
}
解决方案 »
- JAVA开发组态软件
- 在DAO中,对某一列进行更新,如何提高速度
- apache与resin关于伪静态页面 urlrewrite的处理方法
- hibernate 的一个one-to-one级联最简单的例子居然报错,请大家帮我看看。谢谢了
- hql支持这样的表达吗?
- #### 送分的问题,比较急(有关JMS的) ####
- JBuilder中如何部署EJB应用到WebLogic8.1中?
- 在JAVA中能否手动设置输出设备的分辨率(如打印机)?
- 请教:J2EE环境中(jb7+weblogic),在客户端安装sun java plugin j2ee 1.3.1目的是什么?
- 急:IOS 用 URL 调用 外部接口
- 关于JMX 中MBean属性和方法的可见性设置
- 用Itext可以产生泰文的pdf?
http://www.360doc.com/content/10/0812/14/1332348_45497678.shtml
http://baike.baidu.com/view/2334734.htm
希望对你有帮助