`
liyiye
  • 浏览: 425084 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

10,boss中JMX的连接与Mbean的获取

    博客分类:
  • jmx
阅读更多

给出一个例程吧
(1)它需要Jboss的jbossall-client.jar包的支持
(2)运行环境为Jboss3.2.6 + jdk5.0 + eclipse3.2M2。jdk5.0内置了JMX支持,如果你不是jdk5.0的话eclipse可能会报有会类找不到的错误
(3)之前必须选启动Jboss

import java.util.Iterator;
import java.util.Properties;
import java.util.Set;

import javax.management.MBeanInfo;
import javax.management.MBeanOperationInfo;
import javax.management.MBeanParameterInfo;
import javax.management.ObjectInstance;
import javax.management.ObjectName;
import javax.naming.InitialContext;

import org.jboss.jmx.adaptor.rmi.RMIAdaptor;

public class TestJMX {

    
public static void main(String[] args) throws Exception {
        
//Get RMIAdaptor Object
        Properties pro = new Properties();
        pro.setProperty(
"java.naming.factory.initial""org.jnp.interfaces.NamingContextFactory");
        pro.setProperty(
"java.naming.provider.url""jnp://localhost:1099");
        pro.setProperty(
"java.naming.factory.url.pkgs""org.jboss.naming:org.jnp.interfaces");
        InitialContext ic 
= new InitialContext(pro);
        RMIAdaptor server 
= (RMIAdaptor) ic.lookup("jmx/rmi/RMIAdaptor");

        
// Get the MBeanInfo for the JNDIView MBean
        ObjectName name = new ObjectName("jboss:service=JNDIView");
        MBeanInfo info 
= server.getMBeanInfo(name);
        System.out.println(
"JNDIView Class: " + info.getClassName());
        MBeanOperationInfo[] opInfo 
= info.getOperations();
        System.out.println(
"JNDIView Operations: ");
        
for (int o = 0; o < opInfo.length; o++) {
            MBeanOperationInfo op 
= opInfo[o];
            String returnType 
= op.getReturnType();
            String opName 
= op.getName();
            System.out.print(
" + " + returnType + " " + opName + "(");
            MBeanParameterInfo[] params 
= op.getSignature();
            
for (int p = 0; p < params.length; p++) {
                MBeanParameterInfo paramInfo 
= params[p];
                String pname 
= paramInfo.getName();
                String type 
= paramInfo.getType();
                
if (pname.equals(type))
                    System.out.print(type);
                
else
                    System.out.print(type 
+ " " + name);
                
if (p < params.length - 1)
                    System.out.print(
&apos;,&apos;);
            }
            System.out.println(
")");
        }

        
//Get all MBeans
        Set mbSet = server.queryMBeans(nullnull); //
        for (Iterator it = mbSet.iterator(); it.hasNext();) {
            ObjectInstance oi 
= (ObjectInstance) it.next();
            System.out.println(oi.getObjectName());
        }
    }

 

这里有一段网上找到的代码,正好是实现了配置文件修改后重读的功能.

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;
import java.util.Properties;

/**
* @author Robbin Fan
*/
public class ConfigUtil {

private static Properties props = null;
private static File configFile = null;
private static long fileLastModified = 0L;

private static void init() {
URL url = ConfigUtil.class.getClassLoader().getResource("global.properties");
configFile = new File(url.getFile());
fileLastModified = configFile.lastModified();
props = new Properties();
load();
}

private static void load() {
try {
props.load(new FileInputStream(configFile));
fileLastModified = configFile.lastModified();
} catch (IOException e) {
throw new RuntimeException(e);
}
}

public static String getConfig(String key) {
if ((configFile == null) || (props == null))
init();
if (configFile.lastModified() > fileLastModified)
load();
return props.getProperty(key);
}

}

 

如果MBean就在本地,则可以用下面的方法来获得:

ThreadPoolMBean poolMBean = (ThreadPoolMBean) MBeanProxyExt.create(ThreadPoolMBean.class, objName);

还有一种远程获得的方法(从开源代码中看到的,未验证)

ThreadPoolMBean poolMBean = (ThreadPoolMBean) MBeanServerInvocationHandler.newProxyInstance(mbeanServer, objName, ThreadPoolMBean.class, false);

分享到:
评论

相关推荐

    jmx 实例 rmi mbean

    在本实例中,我们重点关注的是如何使用Remote Method Invocation(RMI)来实现JMX的MBean管理。RMI是一种在Java平台上进行远程调用的技术,使得一个Java对象的方法可以在不同的Java虚拟机(JVM)之间被调用。结合JMX...

    使用RMI远程连接JVM.用JMX获取JVM的参数

    本文将深入探讨如何利用RMI远程连接到Java虚拟机(JVM),并通过JMX获取JVM的相关参数。 RMI是Java提供的一种机制,允许在不同JVM之间透明地调用对象的方法,就像这些对象都在同一台机器上一样。RMI的核心组件包括...

    JMX 连接工具 Eclipse 插件

    此外,为了实现JMX连接,插件可能使用`MBeanServerConnection`接口与服务端交互,通过`MBeanServerInvocationHandler`处理MBean的操作请求,以及`NotificationListener`监听服务端的通知。 总的来说,"JMX 连接工具...

    Java分布式应用学习笔记09JMX-MBean的介绍

    MBean,即Managed Bean,是在JMX(Java Management Extensions)框架中用于管理资源的一种特殊Java对象。通过MBean,可以方便地对应用程序进行监控与管理。在Java分布式应用的学习过程中,了解MBean的基本原理和使用...

    JMX实用例子详解(包括各种Mbean)

    5. **代理(Adapters)和连接器(Connectors)**:它们用于将JMX与其他管理系统集成,如SNMP或Web管理协议,使得非Java环境下的管理工具也能访问JMX资源。 在"JMX实用例子详解(包括各种Mbean)"这个主题中,我们...

    JMX(一)-------MBean server

    在JMX中,MBean(Managed Bean)是核心概念,它是具有特定管理接口的对象,可以代表任何可管理的资源。 **MBean Server详解** MBean Server是JMX架构的核心,它负责注册、管理和访问MBean。MBean Server就像一个...

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

    在本场景中,我们将介绍如何使用RMI(Remote Method Invocation)连接方式来实现JMX框架的各层级的连接。 MBean是JMX框架的基本组件,用于提供管理信息和功能。MBean可以是任何Java对象,只要它实现了相关的接口。...

    《jmx技术介绍》配套源代码

    通过JMX连接器,外部客户端可以连接到MBean Server,获取MBean的信息或执行操作。 4. MBean Server: MBean Server是JMX的核心,它负责存储和管理MBeans。开发者可以自定义MBean Server,但通常使用Java提供的内置...

    JMX模型MBean示例

    NULL 博文链接:https://jasonhan-sh-hotmail-com.iteye.com/blog/1171904

    JMX官方文档 - 概览,入门,规范

    MBean服务器是JMX的核心,它负责管理所有的MBeans,执行MBean操作,并提供与管理工具的交互接口。MBean服务器可以本地运行,也可以作为远程服务提供。 四、JMX连接器 JMX连接器允许客户端连接到MBean服务器,实现...

    tomcat开启远程jmx连接方式

    在Tomcat这样的Java应用服务器中,JMX可以帮助管理员监控和管理Tomcat的运行状态,如线程、内存使用、MBean等。以下是如何在不同版本的Tomcat(5、6、7)以及在Windows环境下开启远程JMX连接的详细步骤。 ### ...

    java jmx操作示例源码

    6. **客户端访问**:JMX客户端可以使用`JMXPConnector`类建立与MBean服务器的连接,并通过`MBeanServerConnection`接口来操作MBeans。例如,`MBeanServerConnection`提供了`queryMBeans()`和`invoke()`等方法,用于...

    Jmx实例demo下载

    4. **MBean操作**:在MBean中定义的操作可以通过JMX客户端调用,这些操作可能包括获取状态信息、执行管理任务等。 5. **JMX连接器**:`jmxdemo`可能包含了JMX连接器的配置,如RMI连接器,允许远程客户端连接到MBean...

    Druid数据源连接池;mybatis配置集成,多数据源;jmx监控MBean;

    Druid数据源连接池;mybatis配置集成,多数据源;jmx监控MBean;定时任务配置;aop_spring-boot-service

    jmx三种访问方式

    JSP页面可以从MBean中获取数据,并将其渲染为用户友好的界面。用户可以通过提交表单等方式进行交互,这些请求会被转发到对应的Servlet进行处理。 3. **RESTful API**:随着Web服务的发展,另一种HTTP访问JMX的方法...

    jmx mbean学习 jmxtools下载

    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与外部世界交互的桥梁,它们允许管理应用程序通过JMX API连接到MBean Server,进行远程管理。 **2. JMX功能** - **资源监控**: 可以监控Java应用的内存使用、线程状态、类加载情况等...

    JMX配置与使用

    这通常通过在Java代码中添加MBean(Managed Bean)来实现,MBean是JMX中的管理对象,代表了要管理的资源或服务。你可以自定义MBean,定义其属性、操作和通知。然后,通过实现`javax.management.MBeanServer`接口来...

    TongWeb7的JMX监控.doc

    完成上述配置后,就可以使用之前获取的 JMX URL 来连接 TongWeb7 的 JMX 服务,例如 `service:jmx:rmi:///jndi/rmi://192.168.163.99:7200/jmxrmi`。你可以使用 Java 提供的 `jconsole` 工具,或者其他支持 JMX 的第...

    jmx监控weblogic,tomcat,websphere源码

    3. **Management Clients**: 这些是使用JMX API与MBean Server交互的应用程序。在本项目中,"ops-container"可能就是一个管理客户端,它连接到WebLogic、Tomcat和WebSphere的MBean Server,并执行监控任务。 4. **...

Global site tag (gtag.js) - Google Analytics