KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tc > gcrunner > GCRunner


1 /*
2  * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
3  */

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 JavaDoc;
12
13 import javax.management.MBeanServerConnection JavaDoc;
14 import javax.management.MBeanServerInvocationHandler JavaDoc;
15 import javax.management.remote.JMXConnector JavaDoc;
16 import javax.management.remote.JMXConnectorFactory JavaDoc;
17 import javax.management.remote.JMXServiceURL JavaDoc;
18
19 /**
20  * Application that runs gc by interacting with ObjectManagementMonitorMBean. Expects 2 args: (1) hostname of machine
21  * running DSO server (2) jmx server port number
22  */

23 public class GCRunner {
24   private static final TCLogger consoleLogger = CustomerLogging.getConsoleLogger();
25
26   public static void main(String JavaDoc[] args) throws IOException JavaDoc {
27     if (args == null || args.length != 2) {
28       usage();
29       return;
30     }
31
32     String JavaDoc hostName = args[0];
33     int jmxPort = Integer.parseInt(args[1]);
34
35     final JMXConnector JavaDoc jmxConnector = getJMXConnector(hostName, jmxPort);
36     final MBeanServerConnection JavaDoc 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 JavaDoc re) {
43       consoleLogger.error(re.getCause().getMessage());
44     }
45   }
46
47   private static JMXConnector JavaDoc getJMXConnector(String JavaDoc hostName, int jmxPort) throws IOException JavaDoc {
48     String JavaDoc url = "service:jmx:rmi:///jndi/rmi://" + hostName + ":" + jmxPort + "/jmxrmi";
49     JMXServiceURL JavaDoc jmxServerUrl = new JMXServiceURL JavaDoc(url);
50     JMXConnector JavaDoc 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