JMX监控过JBOSS服务器(取JBOSS服务器基本信息以及运行时候的性能信息) 要代码例子

解决方案 »

  1.   

    JBoss有自带的jmx-console,您看看是不是可以。
      

  2.   

    获得JBoss中的指定的MBean下的具体的属性。/**
     * 
     */
    package org.tuturial.common;import java.io.IOException;
    import java.util.Iterator;
    import java.util.Properties;
    import java.util.Set;import javax.management.InstanceNotFoundException;
    import javax.management.MBeanAttributeInfo;
    import javax.management.MBeanException;
    import javax.management.MBeanInfo;
    import javax.management.MBeanOperationInfo;
    import javax.management.MBeanParameterInfo;
    import javax.management.MBeanServerConnection;
    import javax.management.ObjectInstance;
    import javax.management.ObjectName;
    import javax.management.Query;
    import javax.management.QueryExp;
    import javax.management.ReflectionException;
    import javax.naming.InitialContext;import org.jboss.jmx.adaptor.rmi.RMIAdaptor;
    import org.jboss.security.SecurityAssociation;
    import org.jboss.security.SimplePrincipal;/**
     * @author Administrator
     * 
     */
    public class MBeanInvokerOld {
     private MBeanServerConnection server; private ObjectName objName = null; /**
      * 默认构造函数
      */
     public MBeanInvokerOld() {
     } /**
      * 
      * @param mbean
      *            jboss-MBean的
      * @param url
      * @param principal
      * @param credential
      */
     public MBeanInvokerOld(String mbean, String url, String principal,
       String credential) {
      try {
       SecurityAssociation.setPrincipal(new SimplePrincipal(principal));
       SecurityAssociation.setCredential(credential);
       // Get RMIAdaptor Object
       Properties prop = new Properties();
       prop.put(javax.naming.Context.INITIAL_CONTEXT_FACTORY,
         "org.jnp.interfaces.NamingContextFactory");
       prop.put(javax.naming.Context.URL_PKG_PREFIXES,
         "org.jboss.naming:org.jnp.interface");
       prop.put(javax.naming.Context.PROVIDER_URL, url);
       prop.put(javax.naming.Context.SECURITY_PRINCIPAL, principal);
       prop.put(javax.naming.Context.SECURITY_CREDENTIALS, credential);
       InitialContext iniCtx = new InitialContext(prop);
       Object obj = (RMIAdaptor) iniCtx.lookup("jmx/rmi/RMIAdaptor");
       iniCtx.close();
       //   if (obj instanceof RMIAdaptor) {
        server = (MBeanServerConnection) obj;
       }
       objName = new ObjectName(mbean);
       MBeanInfo info = server.getMBeanInfo(objName);
       System.out.println("JNDIView Class '类名': " + info.getClassName());
       MBeanOperationInfo[] opInfo = info.getOperations();
       MBeanAttributeInfo[] attrInfo = info.getAttributes();
       for (int i = 0; i < attrInfo.length; i++) {
        MBeanAttributeInfo mai = attrInfo[i];
        String attrName = mai.getName();    System.out.println("开始获得属性的名称:attrName = " + attrName);   }
       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 = " + returnType
          + " , opName = " + 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();
         System.out.println("pname = " + pname + ",type = " + type
           + "....");
         if (pname.equals(type))
          System.out.print("。。" + type);
         else
          System.out.print("****" + type + " " + objName);
         if (p < params.length - 1)
          System.out.println();
        }
        System.out.println(")");
       }   // Get all MBeans
       ObjectName oo = new ObjectName("org.tuturial.mbean.hello:*");
       // QueryExp exp1 = Query.eq(Query.attr("Age"),Query.value("*"));
       // QueryExp exp1 = (QueryExp)
       // Query.attr("org.tuturial.mbean.hello:service=HelloWorld","Age");
       // QueryExp exp1 = Query.match("Age", "*");
       Set mbSet = server.queryMBeans(oo, null); //
       for (Iterator it = mbSet.iterator(); it.hasNext();) {
        ObjectInstance oi = (ObjectInstance) it.next();
        System.out.println("^^^^^^" + oi.getObjectName());
       }
      } catch (Exception ex) {
       ex.printStackTrace();
      }
     } /**
      * @param args
      */
     public static void main(String[] args) {
      MBeanInvokerOld proxy = new MBeanInvokerOld(
        "org.tuturial.mbean.hello:service=HelloWorld",
        "jnp://199.3.8.98:1099", "admin", "admin");
      // JVM 相关信息  // proxy.call("loadData",null);
      // HashMap result = proxy.call("saveLocation", new HashMap());
      System.out.println("---------------------------------");
      String s = "";
      String ss = "";
      int tmpInt = 0;
      try {
       s = proxy.server.invoke(proxy.objName, "getAge", null, null)
         .toString();  } catch (InstanceNotFoundException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (MBeanException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (ReflectionException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      System.out.println(s); }}