package com.vitria.perf; import java.util.HashMap; import java.util.Random; 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.JMXServiceURL; public class StandaloneInvoker { public static void main(String[] args) throws Exception { String jmxUrl = "service:jmx:remote://10.111.3.152:9999"; JMXServiceURL url = new JMXServiceURL(jmxUrl); String[] credentials = { "vtbaadmin", "vitria"}; HashMap propEnv = new HashMap(); propEnv.put(JMXConnector.CREDENTIALS, credentials); JMXConnector jmxc = JMXConnectorFactory.connect(url, propEnv); MBeanServerConnection mbeanConn = jmxc.getMBeanServerConnection(); NotifiableRestPerfMBean mbeanProxy = JMX.newMBeanProxy(mbeanConn, new ObjectName("com.vitria:service=NotifiableRestPerf"), NotifiableRestPerfMBean.class, true); mbeanProxy.perfWithStringArray(new String[]{"abc", "def"}); final int eventCount = 200; final int eventSize = 128; final int tracePerCount = 10000; final int runMin = 1; String[] payloads = new String[eventCount]; Random random = new Random(); for (int i = 0; i < payloads.length; i++) { StringBuilder sb = new StringBuilder(); for (int j = 0; j < eventSize; j++) { sb.append((char) ('a' + random.nextInt(20))); } payloads[i] = sb.toString(); } long start = System.currentTimeMillis(); long start1 = System.currentTimeMillis(); long total = 0; long count = 0; do { mbeanProxy.perfWithStringArray(payloads); count+=payloads.length; total += payloads.length; if (tracePerCount > 0 && count >= tracePerCount) { System.out.println("EPS=" + (count*1000/(System.currentTimeMillis() - start1))); count = 0; start1 = System.currentTimeMillis(); } } while ((System.currentTimeMillis() - start) < runMin * 60 * 1000); System.out.println("total EPS=" + (total*1000/(System.currentTimeMillis() - start))); } }