1.概述

转载:https://blog.csdn.net/yunlong34574/article/details/46563187

ObjectName 就是存储了一个domain(域)下的一些属性,属性的存储采取key-value的方式来存储,这个类的一个精华所在就是domian及属性(key或者value)都是支持正则的,比如:*表示匹配所有,?表示匹配一个字符

2.ObjectName注释翻译

ObjectName 表示一个Mbean的对象名称,或者是表示一个能够匹配几个Mbean的正则,ObjectName 的所有实例都是不可变的

也就是说, ObjectName 类的实例能够用来表示:一个对象名称,或者一个正则对象,这个对象可以通过正则上下文来查询

ObjectName由两部分组成,包括域(domain)和属性(properties)。域是一个不包含冒号的字符串,我们同时也推荐一个domain不应该包含“//”,因为这两个字符是为将来使用而预留的。如果在域中出现了通配符(*号)或者问号(?),那么这个ObjectName对象就是一个正则对象。通配符(*)匹配零个或者多个任意序列,而问号(?)则指匹配一个字符

如果域是空的,那么ObjectName对象的域在某些环境中会被替换为Mbean的默认域,这么做的目的就是以便ObjectName能够被Mbean使用。

ObjectName对象的属性时一个无序的keys和values,一个key对应一个values。每一个key都是不包含逗号、等号、冒号、星号和问号的非空字符串在同一个ObjectName对象中,不会出现相同的Key。与key关联的value,这个value要么没有引号,要么有引号。一个没有引号的value可能是一个不包含逗号、等号、冒号或者引号的空字符串。如果没有引号的value包含了通配符*号或者问号,那么说明这个ObjectName是一个正则value。通配符*号匹配零个或者多个字符序列,而问号则匹配一个字符。带有引号的value由双引号组成,双引号后边可能是一个空字符串,也可能是另外一个双引号。在这个字符串中,反斜杠有着特殊的意义。反斜杠后边必须紧跟着被下边的字符:

  1. 如果紧跟着的是另一个反斜杠,第二个反斜杠没有特别的意义,所以这两个反斜杠表示一个反斜杠,因为第一个反斜杠是转义字符了
  2. 如果紧跟着的是一个字符’n’,那么这两个字符表示一个换行符,也就是java中的"/n"的意思
  3. 如果紧跟着的是一个双引号,那么这两个字符表示一个双引号,注意这个双引号并不是表示前一个双引号的终结。一个闭合的双引号必须表示一个合法的双引号值。
  4. 如果紧跟着的是一个问号或者通配符(*),那么这两个字符在这里仅仅表示问号和星号,不再是正则的匹配符号了。

一个引号只有可能出现在奇数个反斜杠后边,否则在一个引号的值里面不会出现双引号。双引号括起来了带有双引号的value,在这个value中的任何反斜杠都被认为是分割这个value的。

如果带有双引号的值包含了通配符(*)或者问号,并且这两个符号没有被反斜杠预处理,那么他们则被认为是一个通配符。星号表示匹配零个或者多个字符串序列,而问号则匹配一个字符串。

一个ObjectName对象可能是一个属性列表匹配。在这种情况下,ObjectName可能没有或者有多个keys和关联的values。这个ObjectName能够匹配一个没有正则的ObjectName对象,没有正则的ObjectName的域与有正则的ObjectName的域匹,并且他们包含相同的keys和关联的values,同样他们可能包含相同的其他keys和values。

当一个ObjectName对象包含了一个双引号,或者没有引号时包含了上面描述的通配符,那么这个ObjectName就被认为是一个属性列表的模式匹配对象。在这种情况下,这个ObjectName包含了一个或者多个keys和关联的values,至少有一个value包含了通配符。他匹配了一个没有模式匹配的ObjectName对象,因为这两个ObjectName的域能够匹配,并且他们包含了值能够匹配的相同keys;如果这个属性值模式匹配是一个属性列表匹配,那么非模式匹配的Object对象也能够包含其他的keys和values。

当一个Object对象的Key是一个模式匹配,或者一个value是模式匹配,或者key和value都是模式匹配,那么这个对象则是一个属性模式匹配。

如果一个ObjectName对象的域包含了通配符,那么这个ObjectName对象就是一个模式匹配。如果一个ObjectName不是一个模式匹配对象,那么它必须至少包含一个key和这个key关联的value。

ObjectName模式匹配的示例:

【1】*:type=Foo,name=Bar

      匹配任何域下的一个确定keys的集合。keys为:type=Foo,name=Bar

【2】d:type=Foo,name=Bar,*

      匹配域“d”下有keys“ type=Foo,name=Bar ”加上零个或者多个其他keys。

【3】*:type=Foo,name=Bar,*

      匹配任何域下有keys“ type=Foo,name=Bar ”加上零个或者多个其他keys。

【4】d:type=F?o,name=Bar

      与“d:type=Foo,name=Bar”和“d:type=Fro,name=Bar”匹配一致

【5】d:type=F*o,name=Bar

     与“d:type=Fo,name=Bar”和“d:type=Frodo,name=Bar”匹配一致

【6】d:type=Foo,name="B*"

    与 d:type=Foo,name="Bling" 匹配一致,通配符是在引号里面,我们可以使用反斜杠“/”把特殊字符转化为普通字符。

一个ObjectName可以写成下面的格式:域:key属性列表。一个key属性列表可以写成用逗号分开的字符串。每个用逗号分割的字符串要么是一个通配符,要么是一个确定的key值。一个key属性值由key、等号和关联的value组成。

大部分key属性列表都是一个通配符,如果这个key属性列表包含了通配符,那么这个ObjectName是一个通配符属性。在一个ObjectName对象中,空格没有特别的意义。如下面的字符串:

domain: key1 = value1 , key2 = value2

上面的字符串表示一个Object对象,这个对象有两个key组成。每个key由6个字符组成,每个key都是从空格开始,以空格结尾。除了对上边指出的字符的限制,一个ObjectName中没有任何部分会包含换行符“/n”,包括:域、key、value、引用或者没有引号。但是换行符“/n”可以出现一个双引号序列的里面。无论我们使用哪个构造函数来构造ObjectName对象,上边的对特殊字符的规则都是适用的。

为了避免不同的人编写的不同的MBean之间的冲突,一个有效的约定就是域的名字采用机构dns的反向写法。例如:Sun Microsystems Inc公司的DNS名为sun.com,那么我可以定义域为com.sun.MyDomain,这个基本上跟java语言的包名字定义的约定是一致的。

3.ObjectName的测试

package org.apache.catalina.manager;import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;/*** 测试ObjectName对象* * @author rey* */
public class MyTest {/*** @param args* @throws NullPointerException* @throws MalformedObjectNameException*/public static void main(String[] args) throws MalformedObjectNameException,NullPointerException {String sAnotherName ="d:type=F*o,name=Bar";ObjectName currObjectName = new ObjectName(sAnotherName);System.out.println(currObjectName.toString());}}

输出结果:d:type=F*o,name=Bar

4.ObjectName的源码可以从jdk中查看

包路径为:javax.management.ObjectName

【Java】java JMX之ObjectName相关推荐

  1. [Jmeter]通过批处理调用java,java从CSV动态读取登录的用户名和密码,并将其作为参数组合成字符串,写入外部.bat文件,然后通过Java执行这个外部批处理文件...

    问题1:怎样通过批处理调用java代码? 问题2:怎样通过java从CSV文件获取到用户名和密码存入变量? 问题3:怎样将获取到的用户名和密码组合成字符串,写入外部批处理文件? 问题4:怎样在批处理文 ...

  2. [零基础学JAVA]Java SE实战开发-37.MIS信息管理系统实战开发[JDBC](1)

    MIS信息管理系统实战开发之使用MySQL实现保存 开发背景 ID.姓名.年龄为公共信息,而学生有成绩,工人有工资 定义一个抽象类Person(ID.姓名.年龄),学生是其子类,有成绩,工人是其子类有 ...

  3. 零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置

    1.课程名称:Java发展及JDK配置 本季介绍了JAVA的发展过程,包括JDK的发展历程,path路径的配置和classpath的配置及作用.并简单讲解了一个简单的JAVA程序,并通过此程序讲解了J ...

  4. Java - Java集合中的安全失败Fail Safe机制 (CopyOnWriteArrayList)

    文章目录 Pre 概述 fail-safe的容器-CopyOnWriteArrayList add remove函数 例子 缺陷 使用场景 Pre Java - Java集合中的快速失败Fail Fa ...

  5. Java - Java集合中的快速失败Fail Fast 机制

    文章目录 什么是 fail-fast 源码解读 Itr 为什么对集合的结构进行修改会发生并发修改异常-源码分析 修改方法之 remove 修改方法之 add 案例分享 [案例一] [案例二] [案例三 ...

  6. java比python难_python java JAVA比python难多少?

    python和java哪个好? 学python好还是java好一次一次的失望后来渐渐放弃,哪怕后来有人提起你的名字小编脸上也不会泛起红晕. Python Python是一种面向对象的解释型计算机程序设 ...

  7. java java se_Java 8 SE可选,严格的方法

    java java se 大约两周前,Stephen Colebourne提出了使用Optional的实用方法 . 如果您阅读了它,您可能会从我以前的建议中猜到我不同意. 总览 我必须以免责声明开头, ...

  8. java java编码_Java编码约定被认为是有害的

    java java编码 在Oracle网站上有Java编程语言的官方代码约定指南. 您可能希望这份超过20页的文档将是有关Java语言的最佳实践,提示和技巧的最完整,最全面和最权威的来源. 但是一旦您 ...

  9. java java se_Java SE 11:推动Java前进

    java java se 介绍 在我看来,这篇文章提出了Java语言应该如何发展成为一种首选语言. 它还提供了一些我喜欢但是有时(可能永远不会)成为Java的一部分的功能,出于某些原因,我将对此加以解 ...

  10. java java se_Java SE 7、8、9 –推动Java前进

    java java se 今天(注:2011年10月4日)是主题演讲日. JavaOne Keynote将于今早从上午8:30到10:30进行,而我的新闻通行证又一次让我很早就参加了. 因此,我有时间 ...

最新文章

  1. c语言实验报告世界时钟,基于LCD的电子时钟实验报告.doc
  2. 第三课--EFM32GG11系列--串口接收不定长度数据的几种方式
  3. 使用Python和Pandas的最简单的数据清理方法
  4. java项目导入包报错_转!java web项目 build path 导入jar包,tomcat启动报错 找不到该类...
  5. windos oracle创建sid,window下改oracle_sid | 学步园
  6. jquery插件封装指南
  7. java 二叉排序_java实现二叉排序树
  8. 高通driver模块编译方法
  9. 自制简易JTAG下载烧写工具
  10. C Primer Plus 第9章 函数 9.7 指针简介
  11. 算法|决策树算法究竟说的是什么?
  12. 12.PHP-FPM
  13. 要毕业了,兄弟也签了工作。。。
  14. 如何通过文献名称获取相应的DOI号?
  15. 无穷小、梯度向量和泰勒展开
  16. holder.js如何使用
  17. 深入浅出Apache DolphinScheduler
  18. HBuilderX 开发工具
  19. custom_filter
  20. 生日祝福html_说祝福 | 祝4月的你生日快乐

热门文章

  1. 3月1日见,魅族新品要来了!
  2. “几乎看不见”的铰链!可折叠iPhone要来了?
  3. 广电总局清查整治电视购物频道 23档收藏类购物节目停播
  4. 雷军:小米11的屏幕是小米手机有史以来最贵且最好的屏幕
  5. 疑似小米10超大杯入网:搭载骁龙865+/120Hz高刷屏加持
  6. 苹果今年预计生产8000万部iPhone 12,多还是少?
  7. 刘作虎:一加新品将全系支持 5G
  8. 马斯克获评最鼓舞人心科技领导者,马云排名第5
  9. 快手小剧场推出独立APP“追鸭”
  10. 小红书 “红”到翻车:你的骚操作闪了我的腰?