You need to provide the server host name and port number in the JMX code and also set the class path before compiling it.
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Hashtable;
import org.apache.log4j.Logger;
import javax.management.MBeanServerConnection;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.naming.Context;
public class WLMonitMain {
private static MBeanServerConnection connection;
private static JMXConnector connector;
private static ObjectName service;
static Logger log = Logger.getLogger(WLMonitMain.class.getName());
static {
try {
System.out.println("…");
service = new ObjectName(
"com.bea:Name=RuntimeService,"
+ "Type=weblogic.management.mbeanservers.runtime.RuntimeServiceMBean");
} catch (MalformedObjectNameException e) {
throw new AssertionError(e.getMessage());
}
}
public static void initConnection(String hostname, String portString,
String username, String password) throws IOException,
MalformedURLException {
String protocol = "t3";
Integer portInteger = Integer.valueOf(portString);
int port = portInteger.intValue();
String jndiroot = "/jndi/";
String mserver = "weblogic.management.mbeanservers.runtime";
JMXServiceURL serviceURL = new JMXServiceURL(protocol, hostname, port,
jndiroot + mserver);
Hashtable h = new Hashtable();
h.put(Context.SECURITY_PRINCIPAL, username);
h.put(Context.SECURITY_CREDENTIALS, password);
h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,
"weblogic.management.remote");
connector = JMXConnectorFactory.connect(serviceURL, h);
connection = connector.getMBeanServerConnection();
}
public static void testMethod() {
try {
ObjectName serverRuntime = (ObjectName) connection.getAttribute(service, "ServerRuntime");
String name = (String) connection.getAttribute(serverRuntime,"Name");
ObjectName jvmRuntime = new ObjectName("com.bea:ServerRuntime="+name+",Name="+name+",Type=JVMRuntime");
System.out.println("Heap Free Percent"+connection.getAttribute(jvmRuntime, "HeapFreePercent"));
log.debug("Heap Free Percent"+connection.getAttribute(jvmRuntime, "HeapFreePercent"));
ObjectName jdbcRuntime= new ObjectName("com.bea:ServerRuntime="+name+",Name="+name+",Type=JDBCServiceRuntime");
ObjectName[] dataSourceArray = (ObjectName[]) connection.getAttribute(jdbcRuntime,"JDBCDataSourceRuntimeMBeans");
for (int j = 0; j < dataSourceArray.length; j++){
String poolName = (String)connection.getAttribute(dataSourceArray[j], "Name");
System.out.println("poolName"+poolName);
ObjectName jdbcDatasourceRuntime = new ObjectName("com.bea:ServerRuntime="+name+",Name="+poolName+",Type=JDBCDataSourceRuntime");
System.out.println("Datasource Status "+connection.getAttribute(jdbcDatasourceRuntime, "State"));
log.info("Datasource Status "+connection.getAttribute(jdbcDatasourceRuntime, "State"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
String hostname = "localhost";
String portString = "7001";
String username = "weblogic";
String password = "weblogic123";
System.out.println("initializing connection");
initConnection(hostname, portString, username, password);
WLMonitMain.testMethod();
connector.close();
}
}