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());
service jboss.level-1-a.level-2-a service jboss.level-1-a service jboss
ServiceName tree = ServiceName.of("one", "two", "three"); System.out.println(tree);
service one.two.three
任何一个对象都会有一个hashcode,Wikipedia 的解释如下链接:
http://en.wikipedia.org/wiki/Java_hashCode%28%29
通常:
ServiceName a = ServiceName.JBOSS.append("one", "two", "three"); ServiceName b = ServiceName.JBOSS.append("one", "two", "three"); System.out.println(a.equals(b));
如下代码段:
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());
注意:只有当 equals() 方法返回 true且 hashCode方法返回,HashSet认为他们属于同一对象。
Comparable接口使对象可以比较大小,通常用于排序,ServiceName 实现了 Comparable接口的 compareTo() 方法。通常compareTo() 方法返回 大于 0 的整数,0 或小于 0 的整数:
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]