`

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,tomcat,websphere源码

    通过JMX,你可以获取到WebLogic服务器的运行时信息,如JVM内存使用情况、线程状态、应用程序的健康状况等。 Tomcat则是一个开源的轻量级应用服务器,主要用于Servlet和JSP的部署。虽然Tomcat相对较小巧,但同样支持...

    weblogic9使用手册

    启动WebLogic Server通常通过执行`startManagedWebLogic.sh`或`startWebLogic.sh`脚本完成,而停止则使用`stopManagedWebLogic.sh`或`stopWebLogic.sh`。手册会指导用户如何正确执行这些命令,并处理可能出现的问题...

    weblogic的MX程序设计

    ### WebLogic的MX程序设计详解 ...此外,还详细讲解了如何使用JMX监控WebLogic Server的关键指标,为运维人员提供了强大的工具支持。希望本文能帮助读者更好地理解和运用JMX来提高WebLogic Server的管理水平。

    weblogic weblogic weblogic

    7. **集成与互操作性**:WebLogic能够与Oracle数据库、其他中间件产品(如Oracle Coherence)以及各种企业信息系统(如ERP、CRM)进行集成,实现数据共享和业务流程自动化。 8. **Web服务**:支持SOAP、RESTful等...

    weblogic基础培训教材

    WebLogic基础培训教材是针对Oracle WebLogic Server这一...总的来说,WebLogic基础培训教材是学习WebLogic Server操作和管理的宝贵资源,通过深入学习和实践,可以提升开发者和管理员在企业级Java应用环境中的技能。

    weblogic系统环境

    在`ENV.ppt`文件中,可能详细阐述了如何配置WebLogic Server的环境变量,包括JAVA_HOME、WL_HOME等,以及如何设置系统路径以确保正确执行WebLogic Server的命令行工具。此外,还可能涵盖了与操作系统环境相关的配置...

    weblogic中影响性能的参数总结

    WebLogic Server是一款由Oracle公司开发的企业级Java应用服务器,它为构建、部署和管理企业级Java应用程序提供了强大的支持。在WebLogic的运行过程中...通过监控和持续调整,可以有效提升WebLogic的运行效率和稳定性。

    weblogic 服务器管理(中文版)

    WebLogic Server提供了丰富的监控工具,包括控制台、JMX MBeans和日志分析,可以实时查看服务器性能指标,如CPU使用率、内存占用、请求处理速度等,以便及时发现和解决问题。 【部署应用管理】 应用部署涵盖了从...

    weblogic日常维护手册.doc

    - **线程监控**:通过WebLogic Server的管理控制台或JMX接口,可以检查服务器的线程状态,发现可能的死锁或阻塞问题。 - **JDBC监控**:监控JDBC数据源的连接池状态,包括已分配、空闲和等待的连接数,以及可能...

    Weblogic10 详细配置及性能优化大全

    本篇文章将深入探讨WebLogic Server 10的详细配置以及性能优化策略,旨在帮助管理员和开发者更好地理解和操作这款强大的中间件。 一、WebLogic 10配置详解 1. **系统环境配置**:在开始WebLogic Server 10的配置前...

    Weblogic 培训 PPT

    1. 性能监控:利用Weblogic提供的JMX(Java Management Extensions)和JConsole等工具监控服务器性能,包括CPU、内存、线程、网络等指标。 2. 应用服务器调整:根据应用负载调整线程池大小,优化JVM堆大小设置,启用...

    weblogic监控脚本

    在WebLogic中,监控可以通过多种方式实现,包括使用内置的管理控制台、WLST(WebLogic Scripting Tool)以及编写自定义脚本。以下是一些可能在该博客中讨论的知识点: 1. **WebLogic Scripting Tool (WLST)**: WLST...

    WebLogic Support Patterns

    - Java Management Extensions (JMX) 提供了管理WebLogic Server的接口,通过JMX可以监控应用服务器的性能和状态,例如,通过JConsole或VisualVM等工具。 3. **诊断框架** - WebLogic Server的诊断框架...

    Jprofile资源监控WebLogic部署项目占用资源的大小步骤---操作步骤,图片

    WebLogic的JMX端口可能需要在域配置中查找,通常在`config.xml`文件中。 5、**连接WebLogic**:在JProfiler中,你需要提供WebLogic服务器的认证信息(通常是管理员用户名和密码),以便JProfiler能与WebLogic建立...

    Weblogic管理指南.pdf

    域的配置信息通过XML格式的`config.xml`文件定义,该文件位于安装目录`install_dir/config/domain_name`中。 - **管理服务器**:运行管理服务的WebLogic服务器。管理服务负责集中管理和监控域内所有资源。一个域...

    java jvisualvm 监控weblogic配置方法

    - **采样器**:用于分析程序的 CPU 和内存使用情况,通过采样来获取详细数据。 #### 三、监控远程服务器上的 Java 程序 要监控远程服务器上的 Java 应用程序,如 WebLogic 服务器,需要进行额外的配置。 ##### 1....

    WEBLOGIC调优方案

    - **溢出条件设置**:通过配置执行队列的溢出条件,当达到队列长度阈值百分比时,WebLogic会增加额外线程处理请求。然而,增加线程可能导致资源过度消耗,因此应谨慎设置。 5. **JDBC连接池调优**: - 调整JDBC...

    WebLogic培训资料

    3.2 WLST(WebLogic Scripting Tool):这是一种命令行工具,允许管理员通过脚本自动化执行WebLogic的管理任务,提高效率。 四、部署与管理应用程序 4.1 部署模型:学习WebLogic支持的不同部署模型,如EAR、WAR、...

    weblogic培训资料

    - **JMX监控**:通过JMX接口可以远程监控JVM状态,获取内存、线程、Garbage Collection等信息。 - **JIT编译**:JVM中的即时编译器能将热点代码编译为本地机器码,提升运行效率。 4. **学习资源** - "weblogic...

Global site tag (gtag.js) - Google Analytics