|
//来源: http://middlewaremagic.com/weblogic/?p=606
import java.io.IOException;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Set;
import javax.management.AttributeNotFoundException;
import javax.management.InstanceNotFoundException;
import javax.management.IntrospectionException;
import javax.management.MBeanException;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.ReflectionException;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
import javax.naming.Context;
import weblogic.jndi.Environment;
import weblogic.management.MBeanHome;
import weblogic.management.WebLogicMBean;
import weblogic.management.configuration.ComponentMBean;
import weblogic.management.configuration.JDBCConnectionPoolMBean;
import weblogic.management.configuration.JDBCTxDataSourceMBean;
public class ConnectionPoolParamsChecker {
static MBeanServerConnection connection;
static JMXConnector connector;
static ObjectName service;
public static void main(String [] args){
try
{
//////////////// Enter the Admin Server Details here/////////////////////
String protocol = "t3";
int port = 7001;
String hostname = "localhost";
String jndiroot = "/jndi/";
String mserver = "weblogic.management.mbeanservers.domainruntime";
JMXServiceURL serviceURL = new JMXServiceURL(protocol, hostname, port,
jndiroot + mserver);
service = new ObjectName("com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean");
Hashtable h = new Hashtable();
h.put(Context.SECURITY_PRINCIPAL, "weblogic");
h.put(Context.SECURITY_CREDENTIALS, "weblogic");
h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES,"weblogic.management.remote");
connector = JMXConnectorFactory.connect(serviceURL, h);
connection = connector.getMBeanServerConnection();
new ConnectionPoolParamsChecker().getJdbcRuntime();
}
catch(Exception e)
{
e.printStackTrace();
}
}
private ObjectName getJDBCDriverParamsBean(ObjectName jdbcSystemResourceMBean) throws AttributeNotFoundException,
InstanceNotFoundException, MBeanException, ReflectionException, IOException, IntrospectionException {
ObjectName jdbcDataSourceBean = (ObjectName) getObjectName(jdbcSystemResourceMBean, "JDBCResource");
return (ObjectName) getObjectName(jdbcDataSourceBean, "JDBCDriverParams");
}
private Object getObjectName(ObjectName objectName, String attributeName) throws AttributeNotFoundException,
InstanceNotFoundException, MBeanException, ReflectionException, IOException {
return connection.getAttribute(objectName, attributeName);
}
public void getJdbcRuntime() throws Exception {
ObjectName[] serverRT = (ObjectName[])connection.getAttribute(service, "ServerRuntimes");
int length = (int) serverRT.length;
for (int i = 0; i < length; i++) {
String name = (String) connection.getAttribute(serverRT,"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("\n\t******SERVER NAME: <<"+name+">> \tDataSource Name: " + (String)connection.getAttribute(appRT[x], "Name")+"..........\n");
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"));
String poolName = (String)connection.getAttribute(appRT[x], "Name");
ObjectName jdbcSystemResource = new ObjectName("com.bea:Name=" + poolName+ ",Type=JDBCSystemResource");
ObjectName jdbcDataSourceBean = (ObjectName) getObjectName(jdbcSystemResource, "JDBCResource");
////////////////////
System.out.println("\n\t Connection Pool Parameters: \n");
ObjectName jdbcConnectionPoolParams = (ObjectName) getObjectName(jdbcDataSourceBean, "JDBCConnectionPoolParams");
Integer CapacityIncrement = (Integer) getObjectName(jdbcConnectionPoolParams, "CapacityIncrement");
System.out.println("\t CapacityIncrement :"+CapacityIncrement);
Integer ConnectionCreationRetryFrequencySeconds = (Integer) getObjectName(jdbcConnectionPoolParams, "ConnectionCreationRetryFrequencySeconds");
System.out.println("\t ConnectionCreationRetryFrequencySeconds:"+ConnectionCreationRetryFrequencySeconds);
Integer ConnectionReserveTimeoutSeconds = (Integer) getObjectName(jdbcConnectionPoolParams, "ConnectionReserveTimeoutSeconds");
System.out.println("\t ConnectionReserveTimeoutSeconds :"+ConnectionReserveTimeoutSeconds);
Integer HighestNumWaiters = (Integer) getObjectName(jdbcConnectionPoolParams, "HighestNumWaiters");
System.out.println("\t HighestNumWaiters :"+HighestNumWaiters);
Integer InactiveConnectionTimeoutSeconds = (Integer) getObjectName(jdbcConnectionPoolParams, "InactiveConnectionTimeoutSeconds");
System.out.println("\t InactiveConnectionTimeoutSeconds :"+CapacityIncrement);
Integer InitialCapacity = (Integer) getObjectName(jdbcConnectionPoolParams, "InitialCapacity");
System.out.println("\t InitialCapacity :"+InitialCapacity);
Integer JDBCXADebugLevel = (Integer) getObjectName(jdbcConnectionPoolParams, "JDBCXADebugLevel");
System.out.println("\t JDBCXADebugLevel :"+JDBCXADebugLevel);
Integer LoginDelaySeconds = (Integer) getObjectName(jdbcConnectionPoolParams, "LoginDelaySeconds");
System.out.println("\t LoginDelaySeconds :"+LoginDelaySeconds);
Integer MaxCapacity = (Integer) getObjectName(jdbcConnectionPoolParams, "MaxCapacity");
System.out.println("\t MaxCapacity :"+MaxCapacity);
Integer ProfileHarvestFrequencySeconds = (Integer) getObjectName(jdbcConnectionPoolParams, "ProfileHarvestFrequencySeconds");
System.out.println("\t ProfileHarvestFrequencySeconds :"+ProfileHarvestFrequencySeconds);
Integer ProfileType = (Integer) getObjectName(jdbcConnectionPoolParams, "ProfileType");
System.out.println("\t ProfileType :"+ProfileType);
Integer SecondsToTrustAnIdlePoolConnection = (Integer) getObjectName(jdbcConnectionPoolParams, "SecondsToTrustAnIdlePoolConnection");
System.out.println("\t SecondsToTrustAnIdlePoolConnection :"+SecondsToTrustAnIdlePoolConnection);
Integer ShrinkFrequencySeconds = (Integer) getObjectName(jdbcConnectionPoolParams, "ShrinkFrequencySeconds");
System.out.println("\t ShrinkFrequencySeconds :"+ShrinkFrequencySeconds);
Integer StatementTimeout = (Integer) getObjectName(jdbcConnectionPoolParams, "StatementTimeout");
System.out.println("\t StatementTimeout :"+StatementTimeout);
Integer TestFrequencySeconds = (Integer) getObjectName(jdbcConnectionPoolParams, "TestFrequencySeconds");
System.out.println("\t TestFrequencySeconds :"+TestFrequencySeconds);
String TestTableName = (String) getObjectName(jdbcConnectionPoolParams, "TestTableName");
System.out.println("\t TestTableName :"+TestTableName);
String StatementCacheType = (String) getObjectName(jdbcConnectionPoolParams, "StatementCacheType");
System.out.println("\t StatementCacheType :"+StatementCacheType);
String InitSql = (String) getObjectName(jdbcConnectionPoolParams, "InitSql");
System.out.println("\t InitSql :"+InitSql);
Boolean CredentialMappingEnabled = (Boolean) getObjectName(jdbcConnectionPoolParams, "CredentialMappingEnabled");
System.out.println("\t CredentialMappingEnabled :"+CredentialMappingEnabled);
Boolean IdentityBasedConnectionPoolingEnabled = (Boolean) getObjectName(jdbcConnectionPoolParams, "IdentityBasedConnectionPoolingEnabled");
System.out.println("\t IdentityBasedConnectionPoolingEnabled :"+IdentityBasedConnectionPoolingEnabled);
Boolean IgnoreInUseConnectionsEnabled = (Boolean) getObjectName(jdbcConnectionPoolParams, "IgnoreInUseConnectionsEnabled");
System.out.println("\t IgnoreInUseConnectionsEnabled :"+IgnoreInUseConnectionsEnabled);
Boolean PinnedToThread = (Boolean) getObjectName(jdbcConnectionPoolParams, "PinnedToThread");
System.out.println("\t PinnedToThread :"+PinnedToThread);
Boolean RemoveInfectedConnections = (Boolean) getObjectName(jdbcConnectionPoolParams, "RemoveInfectedConnections");
System.out.println("\t RemoveInfectedConnections :"+RemoveInfectedConnections);
/////////////////////
ObjectName jdbcDriverParams=(ObjectName) getObjectName(jdbcDataSourceBean, "JDBCDriverParams");
ObjectName jdbcProperties=(ObjectName) getObjectName(jdbcDriverParams, "Properties");
ObjectName[] jdbcPropertyBeans = (ObjectName[]) getObjectName(jdbcProperties, "Properties");
for (int j = 0; j < jdbcPropertyBeans.length; j++)
{
ObjectName jdbcPropertyBean = null;
jdbcPropertyBean = jdbcPropertyBeans[j];
String jdbcPropertyName = (String) getObjectName(jdbcPropertyBean, "Name");
String jdbcPropertyValue = (String) getObjectName(jdbcPropertyBean, "Value");
System.out.println("\n\tDataSource URL And "+jdbcPropertyName+"\t"+jdbcPropertyValue);
}
System.out.println(".............................................................................\n");
}
}
}
} |
|