package com.vitria.perf; import java.util.Properties; import java.util.Random; import javax.management.JMX; import javax.management.MBeanServerConnection; import javax.management.ObjectName; import javax.naming.Context; import javax.naming.InitialContext; public class StandaloneMBeanInvoker4JBoss42 { public static void main(String[] args) throws Exception { Properties props = new Properties(); props.put(Context.PROVIDER_URL, "10.111.3.75:1099"); props.put(Context.SECURITY_PRINCIPAL, "vtbaadmin"); props.put(Context.SECURITY_CREDENTIALS, "vitria"); props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces"); Context context = new InitialContext(props); MBeanServerConnection mbeanConn = (MBeanServerConnection) context.lookup("jmx/rmi/RMIAdaptor"); NotifiableRestPerfMBean mbeanProxy = JMX.newMBeanProxy(mbeanConn, new ObjectName("com.vitria:service=NotifiableRestPerf"), NotifiableRestPerfMBean.class, true); System.out.println("invoke JBoss42 mbean..."); final int eventCount = 5000; final int eventSize = 1024; 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))); } }