- 浏览: 828876 次
- 性别:
- 来自: 北京、四川
文章分类
最新评论
-
sunbeamzheng:
总结的很好,好好看看。 拷贝问题确实很需要注意,特别是影不影响 ...
java深拷贝与浅拷贝 -
xmh8023:
...
获取POST数据的值 -
xmh8023:
我访问别的服务器怎么办?急求
获取POST数据的值 -
xmh8023:
String urlString="http://l ...
获取POST数据的值 -
lv12312:
Tomcat 7的老版本么?有bug的,https://iss ...
JMX问题
因为需要写一个后台监控服务器的程序,涉及到jmx,也涉及到分布式的问题,最初在网上找相关资料的时候很少很少,后来才知道其实jmx这一块相关资料已经很多,java网站上已有比较多的完整例子。
最初使用jmx比较简单,安装java官网的例子很快就写出来了几个例子,但在应用中需要结合tomcat来使用,出现了一些问题,比如获取本地的MBeanServer时出错,网上查了些资料发现需要使用tomcat的一些东西,因此该为如下的方式获取MBeanServer即可
获取远程MBeanServerConnection时则是一个很严重的问题,最初使用如下方法
在一台机器上时并没有出现啥问题,一切运行正常,当我使用两台机器进行测试的时候则会出现异常,这个异常在网上搜了一下,相关的资料却很少很少,虽然自己也能看到后面具体的错误,
这个异常在tomcat启动完成之后,再获取链接则会抛出此异常,不知该咋解决呢,后来想到用rmi的另外一种地址形式,但还是不行,因为都走的是同一个思路。
参考了http://www.docjar.com/html/api/sun/tools/jconsole/ProxyClient.java.html这个网站上的代码,发现获取MBeanServerConnection有两种方式,具体的不是很清楚,只知道本地和远程有一些区别,因此自己试了一下居然就解决了两台机器间获取MBeanServerConnection的问题。修改的代码如下
这样经过测试就顺利解决了多台机器(tomcat)使用jmx的问题
最初使用jmx比较简单,安装java官网的例子很快就写出来了几个例子,但在应用中需要结合tomcat来使用,出现了一些问题,比如获取本地的MBeanServer时出错,网上查了些资料发现需要使用tomcat的一些东西,因此该为如下的方式获取MBeanServer即可
/** * 获取本地MBeanServer * @return */ private MBeanServer getLocalMBServer(){ MBeanServer mBeanServer = null; if (MBeanServerFactory.findMBeanServer(null).size() > 0) { mBeanServer =(MBeanServer) MBeanServerFactory.findMBeanServer(null).get(0); } else { mBeanServer = MBeanServerFactory.createMBeanServer(); } return mBeanServer; }
获取远程MBeanServerConnection时则是一个很严重的问题,最初使用如下方法
private MBeanServerConnection getRemoteMBConn(){ // String user = "monitorRole"; // String pw = "password"; // String[] credentials = new String[] { user, pw }; // Map<String, String[]> props = new HashMap<String, String[]>(); // props.put("jmx.remote.credentials", credentials); JMXServiceURL address; MBeanServerConnection mbs=null; String jmxServerIp=ConfigUtils.getInstance().getOampConfig(OampConstants.JMX_SERVER_IP);//127.0.0.1 String jmxServerPort=ConfigUtils.getInstance().getOampConfig(OampConstants.JMX_SERVER_PORT);//9999 try { // address =new JMXServiceURL("service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi"); address =new JMXServiceURL("service:jmx:rmi:///jndi/rmi://"+jmxServerIp+":"+jmxServerPort+"/jmxrmi"); JMXConnector connector = JMXConnectorFactory.connect(address, null); // address = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:1234/jmxrmi"); // JMXConnector connector = JMXConnectorFactory.connect(address, props); mbs= connector.getMBeanServerConnection(); connector.connect(); } catch (Exception e) { SrvLogger.error("oamp", ClientMBServerManage.class, "Fail to getRemoteMBConn", e); } return mbs; }
在一台机器上时并没有出现啥问题,一切运行正常,当我使用两台机器进行测试的时候则会出现异常,这个异常在网上搜了一下,相关的资料却很少很少,虽然自己也能看到后面具体的错误,
ava.io.IOException: Failed to retrieve RMIServer stub: javax.naming.NoInitialContextException: Cannot instantiate class: org.apache.naming.java.javaURLContextFactory [Root exception is java.lang.ClassNotFoundException: org.apache.naming.java.javaURLContextFactory]
这个异常在tomcat启动完成之后,再获取链接则会抛出此异常,不知该咋解决呢,后来想到用rmi的另外一种地址形式,但还是不行,因为都走的是同一个思路。
参考了http://www.docjar.com/html/api/sun/tools/jconsole/ProxyClient.java.html这个网站上的代码,发现获取MBeanServerConnection有两种方式,具体的不是很清楚,只知道本地和远程有一些区别,因此自己试了一下居然就解决了两台机器间获取MBeanServerConnection的问题。修改的代码如下
/** * 获取远程MBeanServerConnection * @return */ private MBeanServerConnection getRemoteMBConn(String ip,String port){ // String user = "monitorRole"; // String pw = "password"; // String[] credentials = new String[] { user, pw }; // Map<String, String[]> props = new HashMap<String, String[]>(); // props.put("jmx.remote.credentials", credentials); // JMXServiceURL address; // SrvLogger.info(ServerMBClientManage.class,"getRemoteMBConn ip="+ip+";port="+port); // MBeanServerConnection mbs=null; // try { // address =new JMXServiceURL("service:jmx:rmi://"+ip+"/jndi/rmi://"+ip+":"+port+"/jmxrmi"); // JMXConnector connector = JMXConnectorFactory.connect(address, null); // mbs= connector.getMBeanServerConnection(); if(StringUtils.isEmpty(ip)||StringUtils.isEmpty(port)){ return null; } try{ MBeanServerConnection mbs=null; Registry registry=LocateRegistry.getRegistry(ip, Integer.parseInt(port)); RMIServer stub=null; JMXConnector jmxc=null; if (stub == null) { stub = (RMIServer) registry.lookup("jmxrmi"); } jmxc = new RMIConnector(stub, null); jmxc.connect(); mbs=jmxc.getMBeanServerConnection(); map.put(ip, mbs); return mbs; } catch (Exception e) { // e.printStackTrace(); SrvLogger.error("oamp", ServerMBClientManage.class, "Fail to getRemoteMBConn", e); } return null; }
这样经过测试就顺利解决了多台机器(tomcat)使用jmx的问题
发表评论
-
Java并发编程:volatile关键字解析
2015-07-30 11:30 633转:http://www.cnblogs.com/dolp ... -
Java内存模型
2015-07-29 13:55 9111. 概述 多任务和 ... -
自定义classloader
2015-07-29 13:54 680转:http://tiantian911.iteye.com ... -
自定义ClassLoader实现java应用核心逻辑模块热部署
2015-07-29 13:51 1016转:http://blog.csdn.net/zhangda ... -
java classloader原理初探
2015-07-29 10:14 664转:http://www.cnblogs.com/ ... -
Java 内存分配全面浅析
2015-07-29 08:52 603转:http://blog.csdn.net/shimi ... -
http stream
2014-07-29 16:38 1137StringBuilder sb = new String ... -
Tomcat远程调试
2011-04-09 12:33 1058需要在Tomcat中的catalina.bat中添加如下的一行 ... -
call cmd /c start 一点疑问
2010-09-01 10:16 2245call "cmd /c start aaa.bat ... -
Windows计划任务之schtasks
2010-08-30 13:21 3587创建:SCHTASKS /Create /RU SYSTEM ... -
ajax返回值中有中文存在的乱码现象
2010-08-27 16:28 1441ajax返回值中有中文存在的乱码现象,解决就加入下面一行代码即 ... -
MIME TYPE
2010-08-26 16:23 7252最近要做需要在页面上放音频的东西,因此需要用到mime typ ... -
JMX问题
2010-08-20 17:20 5502这个问题貌似是启动tomcat之后就获取不到jmx的链接了,不 ... -
Eclipse控制台乱码
2010-08-05 15:18 4887安装了Eclipse,在运行tomcat时,控制台的中文显示乱 ... -
JMX服务端和客户端的代码
2010-07-27 15:37 3560服务端代码如下 package com.rmi; i ... -
JMX连接Tomcat的JMX测试类
2010-07-27 15:33 3292首先是为了使tomcat支持JMX,必须在tomcat的启动项 ... -
JMX的一个链接类
2010-07-27 09:37 1458package com.pachira.oamp.jmxS ... -
java中文转unicode码
2010-07-22 11:04 43378转载地址:http://www.iteye.com/topic ... -
获取POST数据的值
2010-07-21 14:17 9917当method为POST,Content-Type为 ... -
apache的tomcat负载均衡(两个tomcat)和集群配置(session复制)
2010-06-05 16:24 4599参考地址:http://www.iteye.com/topic ...
相关推荐
在本项目中,"jmx监控weblogic,tomcat,websphere源码"涉及了使用JMX来监控三个主流的Java应用服务器:WebLogic、Tomcat和WebSphere。这些服务器都是企业级应用部署的常见选择,对它们的监控对于确保系统性能、稳定性...
在Tomcat这样的Java应用服务器中,JMX能够让我们深入洞察服务器的运行状态,包括内存使用、线程信息、MBean(Managed Beans)的属性和操作等。下面我们将详细介绍如何设置和使用JMX来监控Tomcat。 1. **开启JMX支持...
- 配置Tomcat或其他Java应用的相关JMX监控。 通过以上步骤,可以成功实现Zabbix通过JMX方式对Java中间件的监控。这种方式不仅可以提高监控的灵活性和精确度,还能帮助运维人员更高效地管理复杂的Java应用环境。
Zabbix 通过 JMX 监控 Java 中间件的工作原理是:Zabbix 服务器想知道一台主机上的特定的 JMX 值时,它向 Zabbix-Java-gateway 询问,而 Zabbix-Java-gateway 使用“JMX management API”去查询特定的应用程序,前提...
本篇文章将详细介绍如何使用Zabbix监控Tomcat,特别是通过JMX(Java Management Extensions)来监控Tomcat,并涉及到相关的jar包和Zabbix模板。 首先,让我们了解一下`cmdline-jmx`和`catalina-jmx`这两个标签所指...
- 配置:在Zabbix服务器上创建JMX监控项,指定Tomcat服务器的地址、端口、用户名和密码(如果Tomcat启用了JMX安全)。 - 模板:`zabbix tomcat监控模板`包含了预设的监控项,如Tomcat的CPU使用率、内存使用、线程...
【标题】:“jmx_tomcat_jboss”指的是在Java管理扩展(JMX)框架下对Tomcat和JBoss服务器的管理和监控。 【描述】:Java管理扩展(JMX)是一种标准,允许开发者创建、管理和监控Java应用程序的组件。在这个上下...
有多种工具可以用来通过JMX监控Tomcat,包括: 1. jconsole:JDK自带的轻量级监控工具,提供GUI界面来查看JVM和应用的运行状况。 2. VisualVM:更强大的JDK工具,包含内存分析、线程分析和CPU剖析等功能。 3. 应用级...
本文将介绍如何使用 Zabbix 通过 JMX 监控 Tomcat,帮助初学的朋友快速上手。 监控 Tomcat 的必要性 Tomcat 作为一个流行的 Java Web 服务器,广泛应用于各种 Web 应用程序中。然而,随着应用程序的复杂度增加,...
0.10.3.jar`是一个Java管理扩展(JMX)客户端,它允许通过命令行接口连接到Tomcat服务器,获取和操作JMX MBeans(管理Bean),从而获取Tomcat的运行时信息,如线程池状态、内存使用情况、请求处理时间和更多性能指标...
在Tomcat这样的Java应用服务器中,JMX可以帮助管理员监控和管理Tomcat的运行状态,如线程、内存使用、MBean等。以下是如何在不同版本的Tomcat(5、6、7)以及在Windows环境下开启远程JMX连接的详细步骤。 ### ...
环境准备我们这里就不直接演示了,直接配置tomcat的jmx 1、进入到tomcat的bin目录下 # cd /opt/tomcat/apache-tomcat-8.0.48/bin/ 2、编辑配置文件 # vim catalina.sh 3、在下图中上面添加参数 参数...
2. **Template JMX Tomcat.xml**:此文件可能包含了更具体的JMX监控配置,可能针对Tomcat的特定组件或者提供了额外的监控指标,如Web应用程序的运行情况、Garbage Collector的状态等。 3. **Tomcat.xml**:这个文件...
本文将深入探讨如何使用提供的压缩包文件来实现对Tomcat运行状态的监控,并在出现假死或异常停止时进行自动重启。这个解决方案主要依赖于一个批处理脚本"监控tomcat.bat",以及可能需要的辅助工具如"curl.exe"。 ...
JMX与Spring的结合使得开发者能够轻松地创建和管理自定义的管理接口,而Tomcat作为服务器,通过支持JMX提供了丰富的监控和管理点。这种方式有助于实时优化性能,处理异常情况,以及在不重启服务的情况下进行配置更新...
8. **性能计数器**:监控服务器的CPU使用率、磁盘I/O、网络吞吐量等硬件资源指标。 9. **配置管理**:允许在线修改部分Tomcat的配置,如修改server.xml或context.xml,但请注意谨慎操作,以免影响正常服务。 10. *...
在IT运维管理中,监控系统的重要性不言而喻,尤其对于运行着多个Tomcat应用服务器的环境。Zabbix是一款强大的开源监控解决方案,能够有效地监控网络服务、硬件状态以及应用程序性能。本文将详细讲解如何利用Zabbix来...
标题中的“LambdaProbe监控Tomcat”和“Jconsole监控Tomcat”是指两种不同的方式来监控Java应用程序服务器,特别是Apache Tomcat。这两种工具都是为了帮助开发者和运维人员了解Tomcat的运行状态,诊断性能问题,以及...