1 23 24 import java.util.HashMap ; 25 import java.util.HashSet ; 26 import java.util.Map ; 27 import java.util.Set ; 28 29 import javax.management.MBeanServerConnection ; 30 import javax.management.MBeanServerInvocationHandler ; 31 import javax.management.ObjectName ; 32 import javax.management.remote.JMXConnector ; 33 import javax.management.remote.JMXConnectorFactory ; 34 import javax.management.remote.JMXServiceURL ; 35 import javax.naming.Context ; 36 import javax.security.auth.Subject ; 37 38 import org.continuent.sequoia.common.authentication.PasswordAuthenticator; 39 import org.continuent.sequoia.common.jmx.JmxConstants; 40 import org.continuent.sequoia.common.jmx.mbeans.VirtualDatabaseMBean; 41 import org.continuent.sequoia.common.users.VirtualDatabaseUser; 42 43 49 public class SimpleJmxClient 50 { 51 52 59 public static void main(String [] args) throws Exception 60 { 61 String port = "8091"; 62 String host = "localhost"; 63 String vdbName = "rubis"; 64 JMXServiceURL address = new JMXServiceURL ("rmi", host, 0, "/jndi/jrmp"); 65 66 Map environment = new HashMap (); 67 environment.put(Context.INITIAL_CONTEXT_FACTORY, 68 "com.sun.jndi.rmi.registry.RegistryContextFactory"); 69 environment.put(Context.PROVIDER_URL, "rmi://" + host + ":" + port); 70 71 environment.put(JMXConnector.CREDENTIALS, PasswordAuthenticator 76 .createCredentials("jmxuser", "jmxpassword")); 77 78 JMXConnector connector = JMXConnectorFactory.connect(address, environment); 79 80 ObjectName db = JmxConstants.getVirtualDataBaseObjectName(vdbName); 81 82 VirtualDatabaseUser dbUser = new VirtualDatabaseUser("admin", "c-jdbc"); 84 Set principals = new HashSet (); 85 principals.add(dbUser); 86 Subject subj = new Subject (true, principals, new HashSet (), new HashSet ()); 87 88 MBeanServerConnection delegateConnection = connector 91 .getMBeanServerConnection(subj); 92 93 VirtualDatabaseMBean proxy = (VirtualDatabaseMBean) MBeanServerInvocationHandler 95 .newProxyInstance(delegateConnection, db, VirtualDatabaseMBean.class, 96 false); 97 98 System.out.println(proxy.getAllBackendNames()); 100 101 } 102 } 103 | Popular Tags |