import java.io.IOException; import java.util.*; import javax.management.*; import javax.management.remote.*; import javax.naming.Context; import weblogic.jndi.Environment; import weblogic.management.*; public class JDBCConnectionPoolProperties { static MBeanServerConnection connection; static JMXConnector connector; static ObjectName service; public static void main(String[] args) { try { JMXServiceURL serviceURL = new JMXServiceURL("t3", "localhost", 80, "/jndi/weblogic.management.mbeanservers.domainruntime"); 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, "weblogic123"); h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, "weblogic.management.remote"); connector = JMXConnectorFactory.connect(serviceURL, h); connection = connector.getMBeanServerConnection(); JDBCConnectionPoolProperties jdbcConnPP = new JDBCConnectionPoolProperties(); jdbcConnPP.getJDBCRuntime(); } catch (Exception e) { e.printStackTrace(); } } public void getJDBCRuntime() throws Exception { ObjectName[] serverRuntime = (ObjectName[]) connection.getAttribute(service, "ServerRuntimes"); int length = (int) serverRuntime.length; for (int i = 0; i < length; i++) { String name = (String) connection.getAttribute(serverRuntime[i], "Name"); ObjectName[] jdbcRuntime = (ObjectName[]) connection.getAttribute(new ObjectName("com.bea:Name="+name+",ServerRuntime="+name+",Location="+name+",Type=JDBCServiceRuntime"),"JDBCDataSourceRuntimeMBeans"); int jdbcLength = (int) jdbcRuntime.length; for (int x = 0; x < jdbcLength; x++) { System.out.println("nServer Name " + name + " Datasource Name: " + (String) connection.getAttribute(jdbcRuntime[x], "Name")); System.out.println("ActiveConnectionsCurrentCount : " + connection.getAttribute(jdbcRuntime[x], "ActiveConnectionsCurrentCount")); System.out.println("ActiveConnectionsAverageCount : " + connection.getAttribute(jdbcRuntime[x], "ActiveConnectionsAverageCount")); System.out.println("ActiveConnectionsAverageCount : " + connection.getAttribute(jdbcRuntime[x], "ActiveConnectionsAverageCount")); System.out.println("ConnectionsTotalCount : " + connection.getAttribute(jdbcRuntime[x], "ConnectionsTotalCount")); System.out.println("CurrCapacity : " + connection.getAttribute(jdbcRuntime[x], "CurrCapacity")); System.out.println("CurrCapacityHighCount : " + connection.getAttribute(jdbcRuntime[x], "CurrCapacityHighCount")); System.out.println("HighestNumAvailable : " + connection.getAttribute(jdbcRuntime[x], "HighestNumAvailable")); System.out.println("HighestNumAvailable : " + connection.getAttribute(jdbcRuntime[x], "HighestNumAvailable")); System.out.println("LeakedConnectionCount : " + connection.getAttribute(jdbcRuntime[x], "LeakedConnectionCount")); System.out.println("WaitSecondsHighCount : " + connection.getAttribute(jdbcRuntime[x], "WaitSecondsHighCount")); System.out.println("WaitingForConnectionCurrentCount: " + connection.getAttribute(jdbcRuntime[x], "WaitingForConnectionCurrentCount")); System.out.println("WaitingForConnectionFailureTotal: " + connection.getAttribute(jdbcRuntime[x], "WaitingForConnectionFailureTotal")); System.out.println("WaitingForConnectionTotal : " + connection.getAttribute(jdbcRuntime[x], "WaitingForConnectionTotal")); System.out.println("WaitingForConnectionHighCount : " + connection.getAttribute(jdbcRuntime[x], "WaitingForConnectionHighCount")); String poolName = (String) connection.getAttribute(jdbcRuntime[x], "Name"); ObjectName jdbcSystemResource = new ObjectName("com.bea:Name=" + poolName + ",Type=JDBCSystemResource"); ObjectName jdbcDataSourceBean = (ObjectName) getObjectName( jdbcSystemResource, "JDBCResource"); System.out.println("n Connection Pool Parameters"); ObjectName jdbcConnectionPoolParams = (ObjectName) getObjectName( jdbcDataSourceBean, "JDBCConnectionPoolParams"); Integer CapacityIncrement = (Integer) getObjectName( jdbcConnectionPoolParams, "CapacityIncrement"); System.out .println(" CapacityIncrement :" + CapacityIncrement); Integer ConnectionCreationRetryFrequencySeconds = (Integer) getObjectName( jdbcConnectionPoolParams, "ConnectionCreationRetryFrequencySeconds"); System.out .println(" ConnectionCreationRetryFrequencySeconds:" + ConnectionCreationRetryFrequencySeconds); Integer ConnectionReserveTimeoutSeconds = (Integer) getObjectName( jdbcConnectionPoolParams, "ConnectionReserveTimeoutSeconds"); System.out .println(" ConnectionReserveTimeoutSeconds :" + ConnectionReserveTimeoutSeconds); Integer HighestNumWaiters = (Integer) getObjectName( jdbcConnectionPoolParams, "HighestNumWaiters"); System.out.println(" HighestNumWaiters :" + HighestNumWaiters); Integer InactiveConnectionTimeoutSeconds = (Integer) getObjectName( jdbcConnectionPoolParams, "InactiveConnectionTimeoutSeconds"); System.out.println(" InactiveConnectionTimeoutSeconds :" + CapacityIncrement); Integer InitialCapacity = (Integer) getObjectName( jdbcConnectionPoolParams, "InitialCapacity"); System.out.println(" InitialCapacity :" + InitialCapacity); Integer JDBCXADebugLevel = (Integer) getObjectName( jdbcConnectionPoolParams, "JDBCXADebugLevel"); System.out.println(" JDBCXADebugLevel :" + JDBCXADebugLevel); Integer LoginDelaySeconds = (Integer) getObjectName( jdbcConnectionPoolParams, "LoginDelaySeconds"); System.out.println(" LoginDelaySeconds :" + LoginDelaySeconds); Integer MaxCapacity = (Integer) getObjectName( jdbcConnectionPoolParams, "MaxCapacity"); System.out.println(" MaxCapacity :" + MaxCapacity); Integer ProfileHarvestFrequencySeconds = (Integer) getObjectName( jdbcConnectionPoolParams, "ProfileHarvestFrequencySeconds"); System.out.println(" ProfileHarvestFrequencySeconds :" + ProfileHarvestFrequencySeconds); Integer ProfileType = (Integer) getObjectName( jdbcConnectionPoolParams, "ProfileType"); System.out.println(" ProfileType :" + ProfileType); Integer SecondsToTrustAnIdlePoolConnection = (Integer) getObjectName( jdbcConnectionPoolParams, "SecondsToTrustAnIdlePoolConnection"); System.out.println(" SecondsToTrustAnIdlePoolConnection :" + SecondsToTrustAnIdlePoolConnection); Integer ShrinkFrequencySeconds = (Integer) getObjectName( jdbcConnectionPoolParams, "ShrinkFrequencySeconds"); System.out.println(" ShrinkFrequencySeconds :" + ShrinkFrequencySeconds); Integer StatementTimeout = (Integer) getObjectName( jdbcConnectionPoolParams, "StatementTimeout"); System.out.println(" StatementTimeout :" + StatementTimeout); Integer TestFrequencySeconds = (Integer) getObjectName( jdbcConnectionPoolParams, "TestFrequencySeconds"); System.out.println(" TestFrequencySeconds :" + TestFrequencySeconds); String TestTableName = (String) getObjectName( jdbcConnectionPoolParams, "TestTableName"); System.out.println(" TestTableName :" + TestTableName); String StatementCacheType = (String) getObjectName( jdbcConnectionPoolParams, "StatementCacheType"); System.out.println(" StatementCacheType :" + StatementCacheType); String InitSql = (String) getObjectName( jdbcConnectionPoolParams, "InitSql"); System.out.println(" InitSql :" + InitSql); Boolean CredentialMappingEnabled = (Boolean) getObjectName( jdbcConnectionPoolParams, "CredentialMappingEnabled"); System.out.println(" CredentialMappingEnabled :" + CredentialMappingEnabled); Boolean IdentityBasedConnectionPoolingEnabled = (Boolean) getObjectName( jdbcConnectionPoolParams, "IdentityBasedConnectionPoolingEnabled"); System.out.println(" IdentityBasedConnectionPoolingEnabled :" + IdentityBasedConnectionPoolingEnabled); Boolean IgnoreInUseConnectionsEnabled = (Boolean) getObjectName( jdbcConnectionPoolParams, "IgnoreInUseConnectionsEnabled"); System.out.println(" IgnoreInUseConnectionsEnabled :" + IgnoreInUseConnectionsEnabled); Boolean PinnedToThread = (Boolean) getObjectName( jdbcConnectionPoolParams, "PinnedToThread"); System.out.println(" PinnedToThread :" + PinnedToThread); Boolean RemoveInfectedConnections = (Boolean) getObjectName( jdbcConnectionPoolParams, "RemoveInfectedConnections"); System.out.println(" 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 Name & Value "+ jdbcPropertyName + " " + jdbcPropertyValue); } } } } private Object getObjectName(ObjectName objectName, String attributeName) throws AttributeNotFoundException, InstanceNotFoundException, MBeanException, ReflectionException, IOException { return connection.getAttribute(objectName, attributeName); } }
OUTPUT
Server Name AdminServer Datasource Name: PegaRULES
ActiveConnectionsCurrentCount : 0
ActiveConnectionsAverageCount : 0
ActiveConnectionsAverageCount : 0
ConnectionsTotalCount : 10
CurrCapacity : 2
CurrCapacityHighCount : 4
HighestNumAvailable : 5
HighestNumAvailable : 5
LeakedConnectionCount : 0
WaitSecondsHighCount : 0
WaitingForConnectionCurrentCount: 0
WaitingForConnectionFailureTotal: 0
WaitingForConnectionTotal : 0
WaitingForConnectionHighCount : 0
Connection Pool Parameters
CapacityIncrement :1
ConnectionCreationRetryFrequencySeconds:0
ConnectionReserveTimeoutSeconds :10
HighestNumWaiters :2147483647
InactiveConnectionTimeoutSeconds :1
InitialCapacity :1
JDBCXADebugLevel :10
LoginDelaySeconds :0
MaxCapacity :15
ProfileHarvestFrequencySeconds :300
ProfileType :0
SecondsToTrustAnIdlePoolConnection :10
ShrinkFrequencySeconds :900
StatementTimeout :-1
TestFrequencySeconds :120
TestTableName :SQL SELECT 1 FROM DUAL
StatementCacheType :LRU
InitSql :null
CredentialMappingEnabled :false
IdentityBasedConnectionPoolingEnabled :false
IgnoreInUseConnectionsEnabled :true
PinnedToThread :false
RemoveInfectedConnections :true
Name & Value user SYSTEM