设为首页 收藏本站
查看: 467|回复: 0

[经验分享] weblogic通过JMX获取连接池信息

[复制链接]

尚未签到

发表于 2017-2-16 08:25:21 | 显示全部楼层 |阅读模式
//来源: 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");
}
}
}
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-342721-1-1.html 上篇帖子: weblogic 10.3.6 + jpa 2.0 下篇帖子: Weblogic启动时classloader加载顺序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表