⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.java

📁 jdk-6u10-docs java开发宝典
💻 JAVA
字号:
import java.util.Collections;import java.util.HashMap;import javax.management.Attribute;import javax.management.JMX;import javax.management.MBeanServerConnection;import javax.management.ObjectName;import javax.management.remote.JMXConnector;import javax.management.remote.JMXConnectorFactory;import javax.management.remote.JMXPrincipal;import javax.management.remote.JMXServiceURL;import javax.security.auth.Subject;public class Client {    public static void main(String[] args) {        try {            // Environment map            //            System.out.println("\nInitialize the environment map");            HashMap env = new HashMap();            // Provide the credentials required by the server to successfully            // perform user authentication            //            String[] credentials = new String[] { "username" , "password" };            env.put("jmx.remote.credentials", credentials);            // Create an RMI connector client and            // connect it to the RMI connector server            //            System.out.println("\nCreate an RMI connector client and " +                               "connect it to the RMI connector server");            JMXServiceURL url = new JMXServiceURL(              "service:jmx:rmi:///jndi/rmi://localhost:9999/server");            JMXConnector jmxc = JMXConnectorFactory.connect(url, env);            // Create the delegation subject and retrieve an            // MBeanServerConnection that uses that subject            // when performing the operations on the remote            // MBean server            //            // The connector server will check that the authentication identity            // "username" has the right to execute operations on behalf of the            // given authorization identity "delegate", i.e. the policy file            // must contain the following grant clause:            //            // grant principal javax.management.remote.JMXPrincipal "username" {            //   permission javax.management.remote.SubjectDelegationPermission            //                  "javax.management.remote.JMXPrincipal.delegate";            // };            //            System.out.println("\nCreate the delegation subject");            Subject delegationSubject =                new Subject(true,                            Collections.singleton(new JMXPrincipal("delegate")),                            Collections.EMPTY_SET,                            Collections.EMPTY_SET);            // Get an MBeanServerConnection for the given delegation subject            //            System.out.println("\nGet an MBeanServerConnection " +                               "for the given delegation subject");            MBeanServerConnection mbsc =                jmxc.getMBeanServerConnection(delegationSubject);            // Get domains from MBeanServer            //            System.out.println("\nDomains:");            String domains[] = mbsc.getDomains();            for (int i = 0; i < domains.length; i++) {                System.out.println("\tDomain[" + i + "] = " + domains[i]);            }            // Create SimpleStandard MBean            //            ObjectName mbeanName = new ObjectName("MBeans:type=SimpleStandard");            System.out.println("\nCreate SimpleStandard MBean...");            mbsc.createMBean("SimpleStandard", mbeanName, null, null);            // Get MBean count            //            System.out.println("\nMBean count = " + mbsc.getMBeanCount());            // Get State attribute            //            System.out.println("\nState = " +                               mbsc.getAttribute(mbeanName, "State"));            // Set State attribute            //            mbsc.setAttribute(mbeanName,                              new Attribute("State", "changed state"));            // Get State attribute            //            // Another way of interacting with a given MBean is through a            // dedicated proxy instead of going directly through the MBean            // server connection            //            SimpleStandardMBean proxy = JMX.newMBeanProxy(                    mbsc, mbeanName, SimpleStandardMBean.class);            System.out.println("\nState = " + proxy.getState());            // Add notification listener on SimpleStandard MBean            //            ClientListener listener = new ClientListener();            System.out.println("\nAdd notification listener...");            mbsc.addNotificationListener(mbeanName, listener, null, null);            // Invoke "reset" in SimpleStandard MBean            //            // Calling "reset" makes the SimpleStandard MBean emit a            // notification that will be received by the registered            // ClientListener.            //            System.out.println("\nInvoke reset() in SimpleStandard MBean...");            mbsc.invoke(mbeanName, "reset", null, null);            // Sleep for 2 seconds in order to have time to receive the            // notification before removing the notification listener.            //            System.out.println("\nWaiting for notification...");            Thread.sleep(2000);            // Remove notification listener on SimpleStandard MBean            //            System.out.println("\nRemove notification listener...");            mbsc.removeNotificationListener(mbeanName, listener);            // Unregister SimpleStandard MBean            //            System.out.println("\nUnregister SimpleStandard MBean...");            mbsc.unregisterMBean(mbeanName);            // Close MBeanServer connection            //            System.out.println("\nClose the connection to the server");            jmxc.close();            System.out.println("\nBye! Bye!");        } catch (Exception e) {            e.printStackTrace();        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -