`

weblogic中通过JMX获取执行线程的详细信息

 
阅读更多
//来源:http://middlewaremagic.com/weblogic/?p=549

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Hashtable;
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;
import weblogic.management.runtime.*;
 
public class CompleteWebLogicMonitoring {
	private static MBeanServerConnection connection;
	private static JMXConnector connector;
	private static final ObjectName service;
	static {
		try {
			service = new ObjectName("com.bea:Name=DomainRuntimeService,Type=weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean");
		}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.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();
	}

	public static ObjectName[] getServerRuntimes() throws Exception {
		return (ObjectName[]) connection.getAttribute(service,"ServerRuntimes");
	}
 
	public void printNameAndState() throws Exception {
		ObjectName[] serverRT = getServerRuntimes();
		System.out.println(" Server   State");
		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( name + " : " + state);
		}
	}
	 
	public void threadDump() 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 executeQueueRT[] =  (ObjectName[]) connection.getAttribute(serverRT[i],"ExecuteQueueRuntimes");
			System.out.println("\n....<"+name+"> :<ExecuteQueueRuntimes>..........Length: "+executeQueueRT.length);
			 
			for(int k=0;k<executeQueueRT.length;k++)
			{
				ExecuteThread[] executeThreads=(ExecuteThread[])connection.getAttribute(executeQueueRT[k], "ExecuteThreads");
				for(int j=0;j<executeThreads.length;j++)
				{
					String currReq=executeThreads[i].getCurrentRequest() ;
					String threadName=executeThreads[i].getName();
					String appName=executeThreads[i].getApplicationName()  ;
					int servicedRequestTotalCount=executeThreads[i].getServicedRequestTotalCount();
					System.out.println("getName                      : " +threadName);
					System.out.println("getCurrentRequest            : " +currReq);
					System.out.println("getApplicationName           : " +appName);
					System.out.println("getServicedRequestTotalCount : " +servicedRequestTotalCount);
					System.out.println(".......................................\n");
				}
			}
		}
	}
	 
	public static void main(String[] args) throws Exception {
		if(args.length < 4) {
			System.out.println("<Usage>: java CompleteWebLogicMonitoring  adm-host  adm-port adm-username adm-password");
			System.exit(0);
		}
		String hostname = args[0];
		String portString = args[1];
		String username = args[2];
		String password = args[3];
		CompleteWebLogicMonitoring s = new CompleteWebLogicMonitoring();
		initConnection(hostname, portString, username, password);
		 
		s.printNameAndState();
		s.threadDump();
		connector.close();
	}
}

 

分享到:
评论

相关推荐

    通过jmx监控管理weblogic

    BEA WebLogic Server实现了JMX大部分的API,并且提供了一个完全兼容JMX的控制台来管理各种资源。OPEN SOURCE的应用服务器JBoss也是基于JMX来实现。并且对之评价很高,认为是目前为止最好的软件集成工具。JBoss的成功...

    loadrunner 监视 weblogic(JMX) 操作详细步骤.txt

    loadrunner 监视 weblogic(JMX) 操作详细步骤.txt

    jmx监控weblogic,tomcat,websphere源码

    java项目,自己做的项目利用jmx监控weblogic,tomcat,websphere源码

    Java 版jmx 监控中间件weblogic

    Java版 jmx 监控weblogic 生成html

    weblogic server线程数控制

    ( Weblogic_Server线程数控制.docx ) ( Weblogic_Server线程数控制.docx )

    java 获取WebLogic 系统详细信息

    java 获取WebLogic 系统详细信息

    WeblogicJMX:Weblogic JMX 实用程序

    网络逻辑JMX这是一个正在进行的工作,将经常更新,直到完成一组用于 9.X 及更高版本的 Weblogic 服务器的 JMX 服务器实用程序。 目前实时给出一些监控统计,后续会更新更多功能特征目前可以使用以下功能: JVM 监控...

    weblogic监控

    •1、WebLogic服务的监控 •2、WebLogic性能优化 •3、UNIX操作命令介绍 WebLogic服务的监控 •WebLogic的控制台console对内存的监控 •Console--&gt;server--&gt;myserver--&gt;右边窗口Mornitoring--&gt;Performance WebLogic...

    Weblogic提高并发处理性能的设置

    Weblogic提高并发处理性能的设置 对于1. 设置Weblogic线程数 2. 设置Weblogic JDBC 缓冲池 4. 修改 startWeblogic.cmd 文件

    tomcat_weblogic_jmx.txt

    tomcat和weblogic的jmx开通方式。。

    spring获取weblogic jndi数据源的两种方式

    spring获取weblogic jndi数据源的两种方式,一种本地weblogic server获取,无需用户名、密码、IP和端口等;另一种为从其他weblogic server获取,则必须申明用户名、密码、IP和端口

    JMX 入门 详细 教程

    而根据这个接口的实现则有很多种,比如Weblogic 的JMX实现、MX4J、JBoss的JMX实现。在SUN自己也实现了一份,不过在JDK1.4之前,这件JMX实现(一些JAR包)是可选的,你得去 它的网站上下载。JDK5.0则内嵌了进来,安装...

    weblogic中文教程part3

    weblogic中文教程 讲解的很详细,感觉不错,共享出来 还有part2和part1,请搜索和下载

    WEBLOGIC性能调优

    1. 查看当前线程池大小: 登录WEBLOGIC控制台,选择...由于WEBLOGIC9取消了在页面进行调整线程大小的功能,需要在后台进行修改。 2. 修改线程池大小 3. 修改传输通讯包大小 4. 修改JAVA虚拟机内存大小 5. 启用隧道管理

    weblogic 9.x,10.x 线程调整

    weblogic 9.x,10.x 线程调整

    CVE-2018-2893:Oracle WebLogic Server 远程代码执行漏洞分析预警

    攻击者可以在未授权的情况下将 payload 封装在 T3 协议中,通过对 T3 协议中的 payload 进行反序列化,从而实现对存在漏洞的 WebLogic 组件进行远程攻击,执行任意代码并可获取目标系统的所有权限。漏洞危害通过该...

    weblogic详细部署及介绍

    weblogic的详细部署指南,包括具体部署步骤,有详细的截图说明。还有weblogic的详细讲解

    weblogic的MX程序设计

    JMX监控weblogic入门教程,基于weblogic自带的JMX,环境:weblogic8,jmx1.0,jdk1.4

    weblogic wls批量巡检脚本

    weblogic通过wls进行巡检,并自动生成csv巡检结果,可批量进行巡检操作。主要针对 节点状态、线程状态、独占线程、粘滞线程、jvm、jdbc等内容进行巡检,经过测试兼容weblogic9、11g、12c等多版本。 执行方法: 根据...

    weblogic内存调优

    JVM内存的调优 1. Heap设定与垃圾回收Java Heap分为3个区,Young,Old和Permanent。Young保存刚实例化的对象。当该区被填满时,GC会将对象移到Old区。Permanent区则负责保存反射对象,本文不讨论该区。...

Global site tag (gtag.js) - Google Analytics