<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    子在川上曰

      逝者如斯夫不舍晝夜
    隨筆 - 71, 文章 - 0, 評論 - 915, 引用 - 0
    數據加載中……

    jboss中JMX的連接與Mbean的獲取

    文/陳剛 from www.chengang.com.cn

    給出一個例程吧
    (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);

    posted on 2006-03-07 14:54 陳剛 閱讀(5317) 評論(2)  編輯  收藏 所屬分類: JMX

    評論

    # re: jboss中JMX的連接與Mbean的獲取  回復  更多評論   

    有在tomcat下的例子嗎?

    還有,您這個博客上的網站怎么都無法顯示呢?郁悶
    2006-11-01 22:58 | 過客[匿名]

    # re: jboss中JMX的連接與Mbean的獲取  回復  更多評論   

    fasfds
    2007-03-15 13:59 | aaa
    主站蜘蛛池模板: 久久久久久国产精品免费无码| 亚洲成a∨人片在无码2023| 乱人伦中文视频在线观看免费| 成年人免费网站在线观看| 亚洲天堂免费在线| 成年女人免费视频播放体验区| 亚洲性色AV日韩在线观看| 在线播放免费人成视频在线观看| 亚洲最大av资源站无码av网址| 四虎永久在线精品免费网址| 亚洲中文字幕精品久久| 日本不卡高清中文字幕免费| 精品亚洲成A人在线观看青青| 免费在线观看视频a| 国产精品免费看久久久香蕉| 亚洲精品高清无码视频| 日本在线免费播放| 亚洲欧洲日本国产| 日日AV拍夜夜添久久免费| 十八禁的黄污污免费网站| 人人狠狠综合久久亚洲婷婷| 97国产在线公开免费观看| 国产亚洲精品VA片在线播放| 亚洲成A人片在线观看无码3D| 日本道免费精品一区二区| 亚洲色成人网一二三区| 成人免费视频试看120秒| 特a级免费高清黄色片| 亚洲国产人成在线观看69网站| 99久久免费国产精品特黄| 美女视频黄.免费网址| 亚洲国产AV无码专区亚洲AV| 黄页网站免费观看| 日韩免费码中文在线观看| 久久丫精品国产亚洲av不卡 | 337p日本欧洲亚洲大胆裸体艺术| 国产好大好硬好爽免费不卡 | 亚洲午夜福利在线观看| 日韩精品福利片午夜免费观着| 国产免费黄色无码视频| 2020天堂在线亚洲精品专区|