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

标签: weblogic 中通 jmx | 发表时间:2013-12-03 19:00 | 作者:wdmsyf
出处:http://www.iteye.com
//来源:   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();
	}
}

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [weblogic 中通 jmx] 推荐:

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

- - 企业架构 - ITeye博客
已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

WebLogic 优化

- - 开源软件 - ITeye博客
WebLogic 配置文件(config.xml)包含了大量很直观的与性能有关的参数,能通过配置环境与应用程序得到很好的优化. 基于系统的需要调整这些参数不仅能改善单个点的性能,而且能提高整个应用程序性能的可衡量性. 试着采用下列WebLogic配置方法,或许能使你的系统达到最佳状态:. 一 修改运行队列线程数的值.

【转】JMX 与系统管理

- - 企业架构 - ITeye博客
         原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-jse63/.         JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架. JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用.

JMX在Tomcat中的应用

- - 企业架构 - ITeye博客
一、 JMX 简单介绍 . Tomcat 从 5.0 版本开始引入 JMX ,力图使 JMX 成为 Tomcat 未来版本的管理工具和平台. 首先,让我们来对 JMX 做一个简单了解. JMX 是 Java Management Extension 的缩写,可译为 Java 管理工具扩展,扩展的意思就是 JMX 不包含在标准的 J2SE 中,我们必须要另外下载 JMX RI 的实现.

weblogic server启动慢

- - Linux - 操作系统 - ITeye博客
(1)较好的解决办法: 在Weblogic启动参数里添加 “-.   Djava.security.egd=file:/dev/./urandom” (/dev/urandom 无法启动). 修改Linux上Weblogic使用的jdk $JAVA_HOME/jre/lib/security/java.security 文件.

java中jmx/jconsole/jstat/jmap的关系

- - CSDN博客推荐文章
JMX是java5开始提供的对java应用进行监控的一套接口. 实现方式是在jvm内部起一个mbeanserver通过网络对外开放调用接口,这样外部就可以做应用监控或者类似远程方法调用. java默认实现了jvm的一些监控,比如堆内存使用情况(MemoryMXBean),线程情况(ThreadMXBean),gc情况等,外部程序可以直接使用,比如jconsole实际上就是对这些bean的包装,只是把返回结果可视化了.

Weblogic部署CAS3.5问题解决方案

- - ITeye博客
webLogic版本:10.3.6.0. cas服务端版本:3.5.2.1. 部署一套SSO环境,选用CAS最新版做为服务端,在开发阶段选用Tomcat6做为应用容器未出现任何问题,业务功能整合完毕后准备将CAS服务端移植到weblogic环境下,然后问题出现了. 在整个部署过程中,主要遇到两个问题.

tomcat迁移到weblogic的几个问题

- - 研发管理 - ITeye博客
异常描述:VALIDATION PROBLEMS WERE FOUND problem: cvc-enumeration-valid: string value '3.0' is not a valid enumeration value for web-app-versionType in namespace http://java.sun.com/xml/ns/javaee:.

Weblogic 设置优先引用web项目的jar包

- - ITeye博客
在WEB-INF/weblogic.xml中进行如下配置:. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

weblogic忘记用户名或者密码的解决方法

- - 研发管理 - ITeye博客
weblogic安装后,忘记访问控制台的用户名或者密码,可通过以下步骤来重置用户名密码. 版本:WebLogic Server 10.3. 说明:%DOMAIN_HOME%:指WebLogic Server 域(Domain)目录. 例如我的做测试的域的根目录 DOMAIN_HOME=D:/Weblogic/Middleware/user_projects/domains/base_domain.