当前位置: 首页 > news >正文

网站主机和服务器的区别电脑安装手机wordpress

网站主机和服务器的区别,电脑安装手机wordpress,网站备案证书安装,网站备案 拍照通过这篇文章,我们可以了解到,利用 JMX 技术可以方便获取 Tomcat 监控情况。但是我们采用自研的框架而非大家常见的 SpringBoot,于是就不能方便地通过设置配置开启 Tomcat 的 JMX,——尽管我们也是基于 Tomcat 的 Web 容器&#x…

通过这篇文章,我们可以了解到,利用 JMX 技术可以方便获取 Tomcat 监控情况。但是我们采用自研的框架而非大家常见的 SpringBoot,于是就不能方便地通过设置配置开启 Tomcat 的 JMX,——尽管我们也是基于 Tomcat 的 Web 容器,而是还是 SpringMVC。

在笔者一番尝试下,终于实现了“Enable Embedded Tomcat JMX Programmatically”,所谓 Programmatically 就是编程式的用 Java 代码去配置。实际情况也很简单,就是在 Tomcat 启动的LifecycleEvent事件中加入:

context.addLifecycleListener((LifecycleEvent event) -> {if (isStatedSpring || (event.getLifecycle().getState() != LifecycleState.STARTING_PREP))return;BaseWebInitializer.coreStartup(context.getServletContext(), clz);
//			anotherWayToStartStrping();if (isEnableJMX) {try {LocateRegistry.createRegistry(9011);JMXConnectorServer cs = JMXConnectorServerFactory.newJMXConnectorServer(new JMXServiceURL("service:jmx:rmi://localhost/jndi/rmi://localhost:9011/jmxrmi"),null,ManagementFactory.getPlatformMBeanServer());cs.start();LOGGER.info("成功启动 JMXConnectorServer");} catch (IOException e) {e.printStackTrace();}}isStatedSpring = true;springTime = System.currentTimeMillis() - startedTime;});

要注意的是端口的配置,当前是 9011。

另外如果要鉴权,把newJMXConnectorServer()的第二个参数environmentnull改为一个 map。

哦,对了,还有 Maven 的依赖,——貌似 8 最高的也就这个版本。

<!-- 监控用 -->
<dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-catalina-jmx-remote</artifactId><version>8.5.75</version><type>jar</type>
</dependency>

连接 JMX

刚才的配置就像一个服务端,而接着我们这一步就相当于是客户端的连接。先准备好连接地址:

String jmxURL = "service:jmx:rmi:///jndi/rmi://127.0.0.1:9011/jmxrmi";// 如果要鉴权,还要配置下面的,传入到 environment
Map<String, String[]> map = new HashMap<>();
String[] credentials = new String[]{"monitorRole", "tomcat"};
map.put("jmx.remote.credentials", credentials);

进行连接:

MBeanServerConnection msc = JMXConnectorFactory.connect(new JMXServiceURL(jmxURL)).getMBeanServerConnection();

分门别类地查询

成功连接后,会返回大量的信息。JMX 提供了一种 Domain 命名空间的概念,是为第一的大分类。我们可以打印 Domains 出来,再用getObjectNamesByDomain()列出子类 :

for (String domain : msc.getDomains())System.out.println(domain);List<Node> tomcat = MonitorUtils.getObjectNamesByDomain(msc, "Tomcat");

Node 是我们对结果的封装,实际最重要是里面的fullName即对应 JMX API 的CanonicalName,它就是对象名称 ObjectName,以此来获取具体的属性。

ObjectName threadObjName = new ObjectName("Tomcat:name=\"http-nio-8301\",type=ThreadPool");
System.out.println("currentThreadCount:" + msc.getAttribute(threadObjName, "currentThreadCount"));// tomcat的线程数对应的属性值

因为是自定义的 Tomcat,所以 ObjectName 会不一样。常见的 Tomcat 是

ObjectName threadObjName = new ObjectName("Catalina:type=ThreadPool,name=http-8301");// 端口最好是动态取得

于是就必须通过前面说的getObjectNamesByDomain()“人肉”查找。另外也要注意 Tomcat 的端口配置。

获取 Tomcat 监控

只要能成功连接并获取 JMX 信息,下一步就是将其转换为监控信息渲染到前端。

参考

  • 《JConsole、VisualVM 依赖的 JMX 技术》
http://www.yayakq.cn/news/939665/

相关文章:

  • 大馆陶网站如何编辑网站模板
  • 一诺网站建设如何修改wordpress登录页面
  • t字型布局的网站在dw怎么做简介网络营销的概念
  • 南昌定制网站开发公司制作视频的方法
  • 北京网站建设找德冿朴学新媒体运营要多少钱
  • 国外知名设计网站企业名录搜索软件排行榜
  • 建设网站需要体现的流程有哪些内容北京 网站建设|小程序|软件开发|app开发公司
  • 专业的平面设计网站有哪些建立网站坐等访问者发现
  • 有些网站怎么经常换域名wordpress添加签名
  • 部门网站建设方案在门户网站中
  • 廊坊网站建设服务wordpress qq快捷登陆
  • 公众号和网站先做哪个网络黄页推广软件
  • 学做网站哪里学网站前台模板下载
  • 北京微网站设计历史文化街区和历史建筑信息平台
  • 广西桂平建设局网站群晖 wordpress 域名
  • 知名企业网站分析 比较评估静态网站特点
  • 梧州外贸网站推广设计河南建筑信息公共
  • 网站建设所需网站可以做推广
  • 网站建设丿金手指下拉大理州城乡建设局网站
  • 国外网站如何备案网页制作软件下载中文版
  • 北京网站制作服务怎么做网页链接二维码
  • 网站建设需要什么专业wordpress get_term
  • 凭祥网站建设建设摩托车
  • 网站内容是什么哈尔滨快速建站合作
  • 找合作项目的平台网站seo系统
  • 镇江市住房与城乡建设部网站北航网站建设
  • 建设婚恋网站基本功能有哪些南京h5制作公司
  • 温州网站建设定制怎么做自己的淘宝客推广网站
  • 建什么类型的网站访问量比较大云服务器学生优惠
  • 网站建设的方案图片百度搜索引擎优化的推广计划