热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Tomcat配置JMX

为什么80%的码农都做不了架构师?设置密码文件非常重要,特别是在多用户的环境下。我按以下步骤在jdk1.5.0_08jrelibmanagemen

为什么80%的码农都做不了架构师?>>>   hot3.png

 

设置密码文件非常重要,特别是在多用户的环境下。我按以下步骤在jdk 1.5.0_08jrelibmanagement目录下建立密码文件:

---用密码模板文件(文件名jmxremote.password.template)拷贝出一个名为jmxremote.password的新文件

---将密码文件的文件权限设置为只有你能读写

---为角色设置密码,如monitorRole 和controlRole

---当启动JVM时系统属性已经设置成表2的样子

 

为了能够在启动Tomcat服务器时启用远程JMX监测,要对位于CATALINA_HOME/bin目录下的 Tomcat启动脚本(catalina.bat 或catalina.sh)做如下修改:

catalina.sh中找到 # ----- Execute The Requested Command -----------------------------------------

添加如下代码:

CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=8901

      -Dcom.sun.management.jmxremote.ssl=false

     -Dcom.sun.management.jmxremote.authenticate=true

    -Dcom.sun.management.jmxremote.password.file=jmxremote.password

    -Dcom.sun.management.jmxremote.access.file=jmxremote.access

    -Djava.rmi.server.hostname=172.16.41.89"

 

在bin文件夹中加入jmxremote.password和jmxremote.access

jmxremote.access:

admin readwrite

monitor readonly

jmxremote.password:

admin test

monitor test

两文件的权限为400

 

Jmanager上的url地址配置

service:jmx:rmi:///jndi/rmi://localhost:8901/jmxrmi

复制catalina.sh成jmxcatalina.sh

把startup.sh中catalina.sh换成jmxcatalina.sh

实际上来说我们可以用jmx来监控一些java应用的运行情况,还有自己写的一些服务类的应用。

以下是我们用来做监控的jmx源代码

 

package com.shine.framework.Jmx;  import java.util.HashMap;  
import java.util.Map;  import javax.management.MBeanServerConnection;  
import javax.management.ObjectName;  
import javax.management.remote.JMXConnector;  
import javax.management.remote.JMXConnectorFactory;  
import javax.management.remote.JMXServiceURL;  public class JMXManager {  /** * 建立连接 *  * @param ip * @param jmxport * @return */  public static MBeanServerConnection createMBeanServer(String ip,  String jmxport, String userName, String password) {  try {  String jmxURL = "service:jmx:rmi:///jndi/rmi://" + ip + ":"  + jmxport + "/jmxrmi";  // jmx  // url  JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);  Map map = new HashMap();  String[] credentials = new String[] { userName, password };  map.put("jmx.remote.credentials", credentials);  JMXConnector connector = JMXConnectorFactory.connect(serviceURL,  map);  MBeanServerConnection mbsc = connector.getMBeanServerConnection();  return mbsc;  } catch (Exception e) {  // e.printStackTrace();  System.err.println(ip + "的中间件不可以达");  }  return null;  }  /** * 获取所有属性 *  * @param mbeanServer * @param objName * @return */  public static Map getAllAttribute(MBeanServerConnection mbeanServer,  ObjectName objName) {  if (mbeanServer == null || objName == null)  throw new IllegalArgumentException();  try {  return null;  } catch (Exception e) {  return null;  }  }  /** * 使用MBeanServer获取对象名为[objName]的MBean的[objAttr]属性值 * 

 * 静态代码: return MBeanServer.getAttribute(ObjectName name, String attribute) *  * @param mbeanServer *            - MBeanServer实例 * @param objName *            - MBean的对象名 * @param objAttr *            - MBean的某个属性名 * @return 属性值 */  private static Object getAttribute(MBeanServerConnection mbeanServer,  ObjectName objName, String objAttr) {  if (mbeanServer == null || objName == null || objAttr == null)  throw new IllegalArgumentException();  try {  return String.valueOf(mbeanServer.getAttribute(objName,  "currentThreadsBusy"));  } catch (Exception e) {  return null;  }  }  }

 

 


转:https://my.oschina.net/manmao/blog/637930



推荐阅读
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
author-avatar
携手相约幸福
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有