WLS9은 JMX를 통해 서버 정보를 가져옵니다.
13262 단어 서버
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Hashtable;
import java.rmi.Remote
import javax.management.MBeanServer
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 EnvDetail {
public static String username = "system";
public static String password = "password";
public static int chkValue;
public static String hostname = null;
public static String port = null;
private static MBeanServerConnection connection;
private static JMXConnector connector;
private static final ObjectName service; // Initializing the object name for DomainRuntimeServiceMBean
// so it can be used throughout the class.
static {
try {
service = new ObjectName("com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean");
}catch (MalformedObjectNameException e)
{
throw new AssertionError(e.getMessage());
}
}
/* * Initialize connection to the Domain Runtime MBean Server */
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.domainruntime";
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();
} /* * Print an array of ServerRuntimeMBeans. * This MBean is the root of the runtime MBean hierarchy, and * each server in the domain hosts its own instance. */
public static ObjectName[] getServerRuntimes() throws Exception {
return (ObjectName[]) connection.getAttribute(service, "ServerRuntimes");
}
public void getJvmRuntime() throws Exception {
ObjectName[] serverRT = getServerRuntimes();
int length = (int) serverRT.length;
for (int i = 0; i < length; i++) {
String name = (String) connection.getAttribute(serverRT,"Name");
ObjectName jvmRT = (ObjectName) connection.getAttribute(serverRT[i],"JVMRuntime");
System.out.println("
..<"+name+" : .JVMRuntime>");
Long heapSMX =(Long)connection.getAttribute(jvmRT, "HeapSizeMax");
System.out.println("HeapSizeMax :" Math.round((heapSMX.longValue()/1048576*100000)/100000) " MB ("+connection.getAttribute(jvmRT, "HeapSizeMax")+")" );
Long heapSC =(Long)connection.getAttribute(jvmRT, "HeapSizeCurrent");
System.out.println("HeapSizeCurrent :" Math.round((heapSC.longValue()/1048576*100000)/100000) " MB ("+connection.getAttribute(jvmRT, "HeapSizeCurrent")+" bytes)");
Long heapFC =(Long)connection.getAttribute(jvmRT, "HeapFreeCurrent");
System.out.println("HeapFreeCurrent :" Math.round((heapFC.longValue()/1048576*100000)/100000) " MB ("+connection.getAttribute(jvmRT, "HeapFreeCurrent")+" bytes)");
System.out.println("HeapFreePercent :" + connection.getAttribute(jvmRT, "HeapFreePercent")+"%");
System.out.println("JavaVendor :" + connection.getAttribute(jvmRT, "JavaVendor"));
System.out.println("JavaVersion :" + connection.getAttribute(jvmRT, "JavaVersion"));
Long uptime =(Long)connection.getAttribute(jvmRT, "Uptime");
System.out.println("Uptime :" + connection.getAttribute(jvmRT, "Uptime")+" milliseconds (" + (uptime*.001)+" Seconds)");
System.out.println("******************
");
}
}
public void getJdbcRuntime() throws Exception {
ObjectName[] serverRT = getServerRuntimes();
int length = (int) serverRT.length;
for (int i = 0; i < length; i++) {
String name = (String) connection.getAttribute(serverRT[i],"Name");
ObjectName[] appRT =
(ObjectName[]) connection.getAttribute(new ObjectName("com.bea:Name="+name+",ServerRuntime="+name+",Location="+name+",Type=JDBCServiceRuntime"),"JDBCDataSourceRuntimeMBeans");
int appLength = (int) appRT.length;
for (int x = 0; x < appLength; x++) {
System.out.println("
.. .<"+name+" : JDBCDataSourceRuntimeMBeans>" + (String)connection.getAttribute(appRT[x], "Name")+"");
System.out.println("ActiveConnectionsCurrentCount : " + connection.getAttribute(appRT[x], "ActiveConnectionsCurrentCount"));
System.out.println("ActiveConnectionsAverageCount : " + connection.getAttribute(appRT[x], "ActiveConnectionsAverageCount"));
System.out.println("ActiveConnectionsAverageCount : " + connection.getAttribute(appRT[x], "ActiveConnectionsAverageCount"));
System.out.println("ConnectionsTotalCount : " + connection.getAttribute(appRT[x], "ConnectionsTotalCount"));
System.out.println("CurrCapacity : " + connection.getAttribute(appRT[x], "CurrCapacity"));
System.out.println("CurrCapacityHighCount : " + connection.getAttribute(appRT[x], "CurrCapacityHighCount"));
System.out.println("HighestNumAvailable : " + connection.getAttribute(appRT[x], "HighestNumAvailable"));
System.out.println("HighestNumAvailable : " + connection.getAttribute(appRT[x], "HighestNumAvailable"));
System.out.println("LeakedConnectionCount : " + connection.getAttribute(appRT[x], "LeakedConnectionCount"));
System.out.println("WaitSecondsHighCount : " + connection.getAttribute(appRT[x], "WaitSecondsHighCount"));
System.out.println("WaitingForConnectionCurrentCount: " + connection.getAttribute(appRT[x], "WaitingForConnectionCurrentCount"));
System.out.println("WaitingForConnectionFailureTotal: " + connection.getAttribute(appRT[x], "WaitingForConnectionFailureTotal"));
System.out.println("WaitingForConnectionTotal : " + connection.getAttribute(appRT[x], "WaitingForConnectionTotal"));
System.out.println("WaitingForConnectionHighCount : " + connection.getAttribute(appRT[x], "WaitingForConnectionHighCount"));
System.out.println(".
");
}
}
}
public void getThreadStateandName() throws Exception {
ObjectName[] serverRT = getServerRuntimes();
//System.out.println("got server runtimes");
int length = (int) serverRT.length;
for (int i = 0; i < length; i++) {
String name = (String) connection.getAttribute(serverRT[i], "Name");
String state = (String) connection.getAttribute(serverRT[i],"State");
System.out.println("Server name: " + name + ". Server state: " + state);
ObjectName ThreadRT =(ObjectName) connection.getAttribute(serverRT[i], "ThreadPoolRuntime");
System.out.println("ExecuteThreadTotalCount :"+ (Object)connection. getAttribute(ThreadRT,"ExecuteThreadTotalCount"));
System.out.println("StandbyThreadCount:"+ (Object)connection.getAttribute(ThreadRT, "StandbyThreadCount"));
Integer e_ThreadTotal =(Integer)(Object)connection. getAttribute(ThreadRT,"ExecuteThreadTotalCount");
Integer e_standbyCount = (Integer)connection.getAttribute(ThreadRT, "StandbyThreadCount");
int eThreadTotal = e_ThreadTotal.intValue();
int estandbyCount = e_standbyCount.intValue();
System.out.println("ExecuteActiveThreadCount:"+(eThreadTotal-estandbyCount));
System.out.println("ExecuteThreadIdleCount :"+ (Object)connection. getAttribute(ThreadRT,"ExecuteThreadIdleCount"));
System.out.println("ExecuteHoggingThreadCount:"+ (Object)connection.getAttribute(ThreadRT, "HoggingThreadCount"));
System.out.println("Throughput :"+ (Object)connection.getAttribute(ThreadRT, "Throughput"));
System.out.println("HealthState :"+ (Object)connection.getAttribute(ThreadRT, "HealthState"));
//System.out.println("QueueLength:"+ (Object)connection.getAttribute(ThreadRT, "QueueLength"));
//System.out.println("StandbyThreadCount:"+ (Object)connection.getAttribute(ThreadRT, "StandbyThreadCount"));
//System.out.println("ExecuteActiveThreadCount:"+ (Object[])connection.getAttribute(ThreadRT, "ExecuteThreads"));
//System.out.println("ExecuteActiveThreadCount:"+ ((Object[])connection.getAttribute(ThreadRT, "ExecuteThreads")).size());
//System.out.println("ExecuteActiveThreadCount:"+ ((Object[])connection.getAttribute(ThreadRT, "ExecuteThreads")).length);
}
}
public void getExecuteAll() throws Exception {
System.out.println("*****************-Heap-****************");
getJvmRuntime();
System.out.println("*****************-JDBC-****************");
getJdbcRuntime();
System.out.println("*****************-Thread-****************");
getThreadStateandName();
}
public static void main(String[] args) throws Exception {
if (args.length != 5) {
System.out.println("
CheckValue ------> HeapCheck : 1
");
System.out.println(" CheckValue ------> DBCConnectionCheck : 2
");
System.out.println(" CheckValue ------> ThreadStatusCheck : 3
");
System.out.println(" CheckValue ------> All : 0
");
System.out.println("Usage: java EnvDetail HostName Port CheckValue
");
//System.out.println(args[0]);
String hostname =args[0];
//System.out.println(args[1]);
String port= args[1];
//System.out.println(args[2]);
chkValue = Integer.parseInt(args[2]);
EnvDetail ts = new EnvDetail();
initConnection(hostname,port, username, password);
switch (chkValue) {
case 1: ts.getJvmRuntime(); break;
case 2: ts.getJdbcRuntime(); break;
case 3: ts.getThreadStateandName(); break;
case 0: ts.getExecuteAll(); break;
case 5: System.out.println("CheckValue5"); break;
}
return;
}
}//main method
}// class
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
집 서버 설계 (하드웨어 편)자신의 Redmine이나 ownCloud를 운용하기 위해 사쿠라 VPS, DigitalOcean, OpenShift 등을 놀랐습니다만, 침착 해 왔으므로 현상을 정리하고 싶습니다. 먼저 하드웨어 구성을 정리합니다. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.