1 4 package com.tc.gcrunner; 5 6 import com.tc.logging.CustomerLogging; 7 import com.tc.logging.TCLogger; 8 import com.tc.management.beans.L2MBeanNames; 9 import com.tc.management.beans.object.ObjectManagementMonitorMBean; 10 11 import java.io.IOException ; 12 13 import javax.management.MBeanServerConnection ; 14 import javax.management.MBeanServerInvocationHandler ; 15 import javax.management.remote.JMXConnector ; 16 import javax.management.remote.JMXConnectorFactory ; 17 import javax.management.remote.JMXServiceURL ; 18 19 23 public class GCRunner { 24 private static final TCLogger consoleLogger = CustomerLogging.getConsoleLogger(); 25 26 public static void main(String [] args) throws IOException { 27 if (args == null || args.length != 2) { 28 usage(); 29 return; 30 } 31 32 String hostName = args[0]; 33 int jmxPort = Integer.parseInt(args[1]); 34 35 final JMXConnector jmxConnector = getJMXConnector(hostName, jmxPort); 36 final MBeanServerConnection mbs = jmxConnector.getMBeanServerConnection(); 37 ObjectManagementMonitorMBean mbean = (ObjectManagementMonitorMBean) MBeanServerInvocationHandler 38 .newProxyInstance(mbs, L2MBeanNames.OBJECT_MANAGEMENT, ObjectManagementMonitorMBean.class, false); 39 40 try { 41 mbean.runGC(); 42 } catch (RuntimeException re) { 43 consoleLogger.error(re.getCause().getMessage()); 44 } 45 } 46 47 private static JMXConnector getJMXConnector(String hostName, int jmxPort) throws IOException { 48 String url = "service:jmx:rmi:///jndi/rmi://" + hostName + ":" + jmxPort + "/jmxrmi"; 49 JMXServiceURL jmxServerUrl = new JMXServiceURL (url); 50 JMXConnector jmxConnector = JMXConnectorFactory.newJMXConnector(jmxServerUrl, null); 51 jmxConnector.connect(); 52 return jmxConnector; 53 } 54 55 private static void usage() { 56 consoleLogger.error("Please indicate hostname and jmxport when running this script."); 57 } 58 } 59 | Popular Tags |