用户操作
[即时聊天] [发私信] [加为好友]
隧諷う鎏逝ID:baiboy4493
4389次访问,排名2万外,好友18人,关注者29人。
baiboy4493的文章
原创 43 篇
翻译 0 篇
转载 4 篇
评论 6 篇
隧諷う鎏逝的公告

当我还是个小孩的时候,我总是问妈妈,为什么人一定要长大。现在终于开始明白了。。。我想长大。
最近评论
baiboy4493:你好,这个问题目前我也正在研究,在你尝试从jboss 目录下有个twddle 的脚本 可以从这里去看看 有什么发现没有
fxhu1971:首先非常感谢这段代码让我知道怎么去监控jboss.
现在碰到一个问题,不好解决,请指教。要监控jboss系列,需要用到jbossall-client.jar,但是同样的监控代码,监控3.2.5到3.2.7的只能用3.2.5到3.2.7提供的jbossall-client.jar,使用这个jar不能监控4。0以上的。同样4.0以上的jbossall-client.jar不能用来监控3……
fxhu1971:首先非常感谢这段代码让我知道怎么去监控jboss.
现在碰到一个问题,不好解决,请指教。要监控jboss系列,需要用到jbossall-client.jar,但是同样的监控代码,监控3.2.5到3.2.7的只能用3.2.5到3.2.7提供的jbossall-client.jar,使用这个jar不能监控4。0以上的。同样4.0以上的jbossall-client.jar不能用来监控3……
jxh12345j:thanks 虽然不知道你是男是女..不过这个问题终于让我解决 嘎嘎
djseaside:正用的着
收藏ed
文章分类
    收藏
      相册
      生活改变人生
      存档
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 关于JMX通过MBean监控JBoss收藏

      新一篇: EJB的学习 | 旧一篇: MBean部署到JBoss下运行

              在csdn的一个博客中发现了一个在JMX中用的不是很多,但是却比较实用的方法,于是就想记下来:

      Query,这是一个查询接口,在JMX调用MBean的时候可以通过方法 QueryExp exp=Query.eq();等等方法去直接匹配所需要的Bean和所需要的属性和方法。如果需要得到一个JMX中的所有的MBean,只需要将queryMBeans()参数全部设为null。

      另外在JBoss中使用JMX调用MBean可以使用通用的接口RMI接口去调用,具体方法如下:

      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;
         }

      } catch (Exception ex) {
         ex.printStackTrace();
        }
       }

      下面是一个举例说明的下例子,可以获得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);

       }

      }

       

      发表于 @ 2008年03月05日 16:50:00|评论(loading...)|编辑

      新一篇: EJB的学习 | 旧一篇: MBean部署到JBoss下运行

      评论

      #fxhu1971 发表于2008-09-22 18:11:37  IP: 220.248.75.*
      首先非常感谢这段代码让我知道怎么去监控jboss.
      现在碰到一个问题,不好解决,请指教。要监控jboss系列,需要用到jbossall-client.jar,但是同样的监控代码,监控3.2.5到3.2.7的只能用3.2.5到3.2.7提供的jbossall-client.jar,使用这个jar不能监控4。0以上的。同样4.0以上的jbossall-client.jar不能用来监控3.0系列的。而且4.0的jbossall-client.jar只能用来监控4.0不能监控4.4。而4。4的 jbossall-client.jar不能监控4.0以及3.0 系列但能监控4.2.3.如果版本不匹配就报错Could not dereference object [Root exception is javax.naming.CommunicationException [Root exception is java.io.InvalidClassException: org.jboss.util.id.GUID; local class incompatible: stream classdesc serialVersionUID = 3289509836244263718, local class serialVersionUID = 6926421946503004889]]
      at org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:972)。我尝试把所有的jbossall-client.jar通过改名的方法全部放到lib中,但是不行。请问这个问题怎么解决?既使用一个版本的jbossall-client.jar,监控所有系列的jboss?
      #fxhu1971 发表于2008-09-22 18:12:29  IP: 220.248.75.*
      首先非常感谢这段代码让我知道怎么去监控jboss.
      现在碰到一个问题,不好解决,请指教。要监控jboss系列,需要用到jbossall-client.jar,但是同样的监控代码,监控3.2.5到3.2.7的只能用3.2.5到3.2.7提供的jbossall-client.jar,使用这个jar不能监控4。0以上的。同样4.0以上的jbossall-client.jar不能用来监控3.0系列的。而且4.0的jbossall-client.jar只能用来监控4.0不能监控4.4。而4。4的 jbossall-client.jar不能监控4.0以及3.0 系列但能监控4.2.3.如果版本不匹配就报错Could not dereference object [Root exception is javax.naming.CommunicationException [Root exception is java.io.InvalidClassException: org.jboss.util.id.GUID; local class incompatible: stream classdesc serialVersionUID = 3289509836244263718, local class serialVersionUID = 6926421946503004889]]
      at org.jnp.interfaces.NamingContext.resolveLink(NamingContext.java:972)。我尝试把所有的jbossall-client.jar通过改名的方法全部放到lib中,但是不行。请问这个问题怎么解决?既使用一个版本的jbossall-client.jar,监控所有系列的jboss?我的邮箱地址hufangxian@163.com
      #baiboy4493 发表于2008-10-06 13:32:57  IP: 58.62.113.*
      你好,这个问题目前我也正在研究,在你尝试从jboss 目录下有个twddle 的脚本 可以从这里去看看 有什么发现没有
      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © 隧諷う鎏逝