JBoss 系列九十七:JBoss MSC - 浅析 ServiceName
来源:互联网 发布:手机照相翻译软件 编辑:程序博客网 时间:2024/05/01 08:45
概述
JBoss MSC 是WildFly 8 和 JBoss 7的底层容器。它管理 JBoss 中的所有 Service,JBoss 中的每一个Service都有一个名字,JBoss MSC通过 ServiceName 对象来抽象Service的名字,ServiceName 代吗链接:ServiceName.java,类图如下:
树状结构
WildFly 中的一切都是一个Service,每个 Service 都有一个名字,Service 之间有树形关系,所以 ServiceName 也是树状结构,如下代码端:
ServiceName root = ServiceName.JBOSS;ServiceName l1a = root.append("level-1-a");ServiceName l1b = root.append("level-1-b");ServiceName l2a = l1a.append("level-2-a");ServiceName l2b = l1a.append("level-2-b");System.out.println(l2a);System.out.println(l2a.getParent());System.out.println(l2a.getParent().getParent());
首先我们获取根节点,接着在根节点上添加两个子节点 level-1-a 和 level-1-b,最后在level-1-a 节点添加两个子节点 level-2-a 和 level-2-b,运行输出如下:
service jboss.level-1-a.level-2-aservice jboss.level-1-aservice jboss
如下代码可以快速创建一个 ServiceName 树:
ServiceName tree = ServiceName.of("one", "two", "three");System.out.println(tree);
运行如上代码输出:
service one.two.three
hashCode() 与 equals()
任何一个对象都会有一个hashcode,Wikipedia 的解释如下链接:
http://en.wikipedia.org/wiki/Java_hashCode%28%29
通常:
- 两个对象equals,它必须有相同的hashCode,同一个对象,任何时候hashCode方法返回必须相同
- 通常重写equals()方法时,同时重写hashCode()方法,因为两个对象equals是它的hashCode被访问,且只有两个对象的hashCode返回相同
- hash table 等 hash 相关的数据结构需要使用 hashCode 和 equals 方法
ServiceName a = ServiceName.JBOSS.append("one", "two", "three");ServiceName b = ServiceName.JBOSS.append("one", "two", "three");System.out.println(a.equals(b));
运行输出的结果为 true,说明 ServiceName a 和 b 形同,即 a 的 equals 方法返回 true,这一输出是因为,执行equals 方法时,a 和 b 返回的 hashCode 是相同的。
如下代码段:
ServiceName a = ServiceName.JBOSS.append("one", "two", "three");ServiceName b = ServiceName.JBOSS.append("one", "two", "three");Set<ServiceName> set = new HashSet<ServiceName>();set.add(a);set.add(b);System.out.println(set.size());
运行输出HashSet的 size 为 1,如上向 HashSet 中添加对象过程如下:
- set.add(a) 执行时,a 对象的hashCode方法调运
- set.add(b) 执行时,b 对象的hashCode方法调运;b 对象的 equals() 方法调运;a 对象的hashCode方法调运;b 对象的hashCode方法调运
注意:只有当 equals() 方法返回 true且 hashCode方法返回,HashSet认为他们属于同一对象。
Comparable接口
Comparable接口使对象可以比较大小,通常用于排序,ServiceName 实现了 Comparable接口的 compareTo() 方法。通常compareTo() 方法返回 大于 0 的整数,0 或小于 0 的整数:
- 大于 0 的整数 - 表述 a 对象 大于 b 对象
- 0 - 表述 a 对象 小于 b 对象
- 小于 0 的整数 - 表述 a 对象 小于 b 对象
ServiceName a = ServiceName.JBOSS.append("one");ServiceName b = ServiceName.JBOSS.append("one", "two");List<ServiceName> list = new ArrayList<ServiceName>();list.add(b);list.add(a);System.out.println(list);Collections.sort(list);System.out.println(list);
运行如上代码段输出结果如下:
[service jboss.one.two, service jboss.one][service jboss.one, service jboss.one.two]
从结果可以看出,两个对象可以排序。
0 0
- JBoss 系列九十七:JBoss MSC - 浅析 ServiceName
- JBoss 系列九十八:JBoss MSC - 浅析 ServiceContainer
- JBoss 系列九十六:JBoss MSC - 简单介绍及一个简单示例
- jboss
- JBOSS
- JBoss
- jboss
- jboss
- Jboss
- JBoss
- JBOSS
- JBoss
- Jboss
- Jboss
- jboss
- JBOSS
- jboss
- Jboss
- 什么什么的
- 几款食疗汤可快速治疗感冒
- 高仿易信UI之自定义ActionBar
- 生活不会...
- 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务
- JBoss 系列九十七:JBoss MSC - 浅析 ServiceName
- OpenStack入门以及一些资料之(零,nova计算)
- DWR util.js工具包的使用
- AUTOCAD的dwg文件如何转换为pdf文件?
- HDOJ1198 Farm Irrigation 【并查集】
- hive基本操作
- 下午好
- LeetCode——Sort List
- 获取本机的公网IP和内网IP(JAVA源码)