JMX监听weblogic10

jmx监听weblogic10的文档:http://download.oracle.com/docs/cd/E12840_01/wls/docs103/wlsmbeanref/core/index.html

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Hashtable;

import javax.management.MBeanServerConnection;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.naming.Context;

import weblogic.health.HealthState;

public class WeblogicJmxTest {
    private static MBeanServerConnection connection;

    private static JMXConnector connector;

    private static final ObjectName service;

    /*
     * 实例化 DomainRuntimeServiceMBean 对象名,这样可以通过类使用此对象名.
     */
    static {
        try {
            service = new ObjectName(
                    "com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean");
        } catch (MalformedObjectNameException e) {
            throw new AssertionError(e.getMessage());
        }
    }

    public static void main(String[] args) throws Exception {
        String hostname = ip;
        String portString = port;
        String username = "weblogic";
        String password = "weblogic";
        WeblogicJmxTest demo = new WeblogicJmxTest();
        demo.initConnection(hostname, portString, username, password);
        demo.printNameAndState(demo.getServerRuntimes());
        connector.close();
    }

    /*
     * 实例化与 Domain Runtime MBean Server 的连接。
     */
    private void initConnection(String hostname, String portString, String username, String password)
            throws IOException, MalformedURLException {
        String protocol = "t3";
        Integer portInteger = Integer.valueOf(portString);
        int port = portInteger.intValue();
        String jndiroot = "/jndi/";
        String mserver = "weblogic.management.mbeanservers.domainruntime";
        JMXServiceURL serviceURL = new JMXServiceURL(protocol, hostname, port, jndiroot + mserver);
        Hashtable<String, String> h = new Hashtable<String, String>();
        h.put(Context.SECURITY_PRINCIPAL, username);
        h.put(Context.SECURITY_CREDENTIALS, password);
        h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "weblogic.management.remote");
        connector = JMXConnectorFactory.connect(serviceURL, h);
        connection = connector.getMBeanServerConnection();
    }

    /*
     * 打印一组 ServerRuntimeMBeans.此 MBean 是运行时 MBean 层次的根,此域中的每个服务器承载自己的实例.
     */
    public ObjectName[] getServerRuntimes() throws Exception {
        return (ObjectName[]) connection.getAttribute(service, "ServerRuntimes");
    }

    /*
     * 迭代 ServerRuntimeMBean,获取名称和状态
     */
    public void printNameAndState(ObjectName[] p_objNames) throws Exception {
        ObjectName[] serverRT = p_objNames;
        int length = (int) serverRT.length;
        for (int i = 0; i < length; i++) {
            print("=============Weblogic运行信息===============", "");
            // 域名称
            String name = (String) connection.getAttribute(serverRT[i], "Name");
            System.out.println("域名称: " + name);
            // 运行状态
            String state = (String) connection.getAttribute(serverRT[i], "State");
            System.out.println("运行状态: " + state);
            
            System.out.println("监听端口: " +  connection.getAttribute(serverRT[i], "ListenPort"));
            
            {
                ObjectName ob1 = (ObjectName) connection.getAttribute(serverRT[i], "ThreadPoolRuntime");
                ObjectName obj1_ob2 = (ObjectName) connection.getAttribute(ob1, "Parent");
                if(obj1_ob2!=null){
                    System.out.println(connection.getAttribute(obj1_ob2, "Type"));
                    int threadPool_health = ((HealthState) connection.getAttribute(obj1_ob2, "HealthState")).getState() ;  
                    print("ob2_HealthState", HealthState.mapToString(threadPool_health));
                }
            }
        }
    }

    public void print(String prefix, String content) {
        System.out.println(prefix + ": " + content);
    }

}

 

你可能感兴趣的:(java,eclipse,oracle,weblogic,Security)