我想从Ant任务中调用JMX操作。 但是,找到可用的蚂蚁任务库及其用法非常棘手。 因此,让我分享我的经验,使他人更轻松。

JMX操作的Ant任务

我决定遵循Tomcat文档并使用与tomcat一起分发的ant任务。

仅作记录用途,并不限于Tomcat部署的JMX mBean 。 对我来说,它适用于通过远程连接通过JConsole访问的Java进程。

检索图书馆

  1. 当我想获取最新版本时,我使用了maven中央存储库“按类名搜索”功能并搜索: org.apache.catalina.ant.jmx.JMXAccessorTask (请参阅查询 )
  2. 之后,我去了tomcat 8 jar文件 (称为tomcat-catalina-ant-8.0.8.jar
  3. 并将最新的可用版本复制到我的$ANT_HOME/lib目录中。

用法

我没有机会(或动机?)检查所有可用任务,可以在压缩文件中查看可用任务的完整列表: org/apache/catalina/ant/jmx/antlib.xml ,其中包含以下内容为了我:

<typedefname="open"classname="org.apache.catalina.ant.jmx.JMXAccessorTask" />
<typedefname="set"classname="org.apache.catalina.ant.jmx.JMXAccessorSetTask" />
<typedefname="get"classname="org.apache.catalina.ant.jmx.JMXAccessorGetTask" />
<typedefname="invoke"classname="org.apache.catalina.ant.jmx.JMXAccessorInvokeTask" />
<typedefname="query"classname="org.apache.catalina.ant.jmx.JMXAccessorQueryTask" />
<typedefname="create"classname="org.apache.catalina.ant.jmx.JMXAccessorCreateTask" />
<typedefname="unregister"classname="org.apache.catalina.ant.jmx.JMXAccessorUnregisterTask" />
<typedefname="equals"classname="org.apache.catalina.ant.jmx.JMXAccessorEqualsCondition" />
<typedefname="condition"classname="org.apache.catalina.ant.jmx.JMXAccessorCondition" />

其中,我尝试了以下方法:

org.apache.catalina.ant.jmx.JMXAccessorTask
org.apache.catalina.ant.jmx.JMXAccessorInvokeTask
org.apache.catalina.ant.jmx.JMXAccessorQueryTask

出于演示目的,我使用了Glassfish 4.0。

示例:列出JMX MBean

假设我们要按名称检索MBean(即: java.lang:type=Memory )。 请注意,访问不需要输入用户名和密码(否则应通过相应的属性指定)。

这里值得注意的是resultproperty ,它可以保存我们可以从中获得名称的数组。 因此,在ant构建脚本中:

<typedef name="jmxQuery"classname="org.apache.catalina.ant.jmx.JMXAccessorQueryTask" /><jmxQueryhost="localhost"port="8686"echo="true"name="java.lang:type=Memory"resultproperty="memory" /><echo>Retrieved MBeans count: ${memory.Length}</echo>
<echo>The 1.st one has name: ${memory.0.Name}</echo>

结果对我来说如下输出:

[jmxQuery] memory.Length=1[jmxQuery] memory.0.Name=java.lang:type=Memory[echo] Retrieved MBeans count: 1[echo] The 1.st one has name: java.lang:type=Memory

示例:通过JMX调用操作

这是所需的两步方法:

  1. 之后通过JMX连接到远程服务器
  2. 在特定的MBean上调用操作。

出于演示目的,假设我们要调用垃圾回收(通过在名为: java.lang:type=Memory MBean上调用操作: gc()

样本ant构建文件块完成了该工作(请注意这两个任务之间的ref属性值必须相同):

<typedef name="jmxOpen"classname="org.apache.catalina.ant.jmx.JMXAccessorTask" /><typedef name="jmxInvoke"classname="org.apache.catalina.ant.jmx.JMXAccessorInvokeTask" /><jmxOpenhost="localhost"port="8686"ref="glassfish"failOnError="true" /><jmxInvokename="java.lang:type=Memory"operation="gc"echo="true"delimiter=" "failOnError="true"ref="glassfish" />

更多的信息

有关更多详细信息,我建议阅读Tomcat官方文档以及Javadocs 。

翻译自: https://www.javacodegeeks.com/2014/06/apache-ant-tasks-for-jmx-access.html

用于JMX访问的Apache Ant任务相关推荐

  1. apache jmx_用于JMX访问的Apache Ant任务

    apache jmx 我想从Ant任务中调用JMX操作. 但是,找到可用的蚂蚁任务库及其用法非常棘手. 因此,让我分享我的经验,使他人更轻松. JMX操作的Ant任务 我决定遵循Tomcat文档,并使 ...

  2. Apache Ant 1.10.6发布–用于junitlauncher的fork模式以及新的jmod和链接任务

    Apache Ant 1.10.6已于本周发布. 此版本包含许多错误修复以及一些非常令人兴奋的新功能. 完整的发行说明可在此处获得 ,下载本身也可以在此处获得 . 在本文中,我将介绍该版本中引入的一些 ...

  3. Apache Ant自动化脚本

    http://blog.csdn.net/yubo_725/article/details/52326746 一.什么是Ant 以下介绍来自百度百科: Apache Ant,是一个将软件编译.测试.部 ...

  4. Apache Ant的使用(1)——基础使用教程

    一.什么是Ant 以下介绍来自百度百科: Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.由Apache软件基金会所提供. 我 ...

  5. apache ant

    Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.由Apache软件基金会所提供. 用户群:大多数的Java设计都被用于管理大量 ...

  6. jconsole_我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问

    jconsole 与以前的版本相比,JBoss AS7的目标之一是使其在默认情况下更加安全. 受此目标直接影响的领域之一是,您不再期望服务器在端口上公开某些服务并无需任何身份验证/授权就可以访问它. ...

  7. jconsole 使用_我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问

    jconsole 使用 与以前的版本相比,JBoss AS7的目标之一是使其在默认情况下更加安全. 受此目标直接影响的领域之一是,您不再期望服务器在端口上公开某些服务,而无需任何身份验证/授权即可访问 ...

  8. Apache Ant 1.9.13和1.10.5发布–支持Java 11单文件源程序

    我们刚刚发布了Apache Ant的1.9.13和1.10.5版本 . 与往常一样,您可以从Ant项目下载页面下载它. 这两个版本主要是错误修复版本. 但是,1.10.5版对" java&q ...

  9. 我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问

    与以前的版本相比,JBoss AS7的目标之一是使其在默认情况下更加安全. 受此目标直接影响的领域之一是,您不再期望服务器在端口上公开某些服务,而无需任何身份验证/授权就可以访问它. 请记住,在以前的 ...

最新文章

  1. docker $PWD路径_深入浅出Docker 镜像
  2. 分布式服务框架HSF学习
  3. 如何用 C++ 在 10 行内写出八皇后?
  4. 关于UI Automation框架
  5. 聊聊高并发(三十六)Java内存模型那些事(四)理解Happens-before规则
  6. Chrome的vimium插件的使用笔记
  7. postman raw带文件_postman raw模拟各种http post请求
  8. 【Python成长之路】装逼的一行代码:快速共享文件【华为云分享】
  9. 从零开始学keras之神经网络的数学表示
  10. QT保留小数点后位数
  11. php 生成等比例缩略图,PHP实现原比例生成缩略图的方法
  12. Verilog语法入门
  13. 戴尔电脑vostro恢复出厂(预装Win10)的设置方法
  14. 关于平面束方程的理解
  15. Ubuntu 12.04 使用基本配置
  16. 关于2022年国外广告联盟emu还能做吗?还赚钱不
  17. 微服务拆分之道,几条策略和坚持的原则
  18. MySQL原理与实践(三):由三种数据结构引入MySQL索引及其特性
  19. mysql数据库安装最详解
  20. centos 6.5升级内核到3.10

热门文章

  1. 2015蓝桥杯省赛---java---C---2(立方尾不变)
  2. 二分查找(一次查找多个相同的值)
  3. 19年8月 字母哥 第六章 生命周期内的拦截过滤与监听 用热点公司网不行
  4. 生物信息 python 书籍_用python做生物信息数据分析(1-环境准备)
  5. MySQL8.0: Serialized Dictionary Information(SDI) 浅析
  6. Unicode® Character Name Index
  7. jep290涉及jdk版本_JDK 13中的JEP 355文本块
  8. java中list去除空值_Java –从列表中删除所有空值
  9. sbe 详解_内部简单二进制编码(SBE)
  10. 并发查询parallel_惯用并发:flatMap()与parallel()– RxJava常见问题解答