JavaTM Platform
Standard Ed. 6

패키지 javax.management.relation

관계 서비스에 대해 정의합니다.

참조처:
          설명

인터페이스의 개요
Relation 관계 서비스에 의해 관리되는 관계를 나타내는 MBean 클래스는, 이 인터페이스를 구현할 필요가 있습니다.
RelationServiceMBean 관계 서비스에는, 관계형과 관계의 작성 및 삭제, 무결성의 처리, 및 쿼리기구의 제공의 기능이 있습니다.
RelationSupportMBean 관계 서비스는, RelationSupport 객체를 내부에서 사용해, 롤수에 제한이 없는 임의의 관계형의 단순한 관계 (롤만으로 프로퍼티이나 메소드를 가지지 않는 관계)를 표현합니다.
RelationType 관계형을 표현하는 모든 클래스가, RelationType 인터페이스를 구현할 필요가 있습니다.
 

클래스의 개요
MBeanServerNotificationFilter MBeanServerNotification 의 필터입니다.
RelationNotification 관계 서비스내의 변경의 통지입니다.
RelationService 관계 서비스에는, 관계형과 관계의 작성 및 삭제, 무결성의 처리, 및 쿼리기구의 제공의 기능이 있습니다.
RelationSupport 관계 서비스는, RelationSupport 객체를 내부에서 사용해, 롤수에 제한이 없는 임의의 관계형의 단순한 관계 (롤만으로 프로퍼티이나 메소드를 가지지 않는 관계)를 표현합니다.
RelationTypeSupport RelationTypeSupport 객체는, RelationType 인터페이스를 구현합니다.
Role 롤명, ObjectName 로 참조되는 MBean 를 포함해, 롤을 표현합니다.
RoleInfo RoleInfo 객체는, 관계형에 포함되는 롤을 집계합니다.
RoleList RoleList 는, 롤 (Role 객체)의 리스트를 나타냅니다.
RoleResult 관계의 복수의 롤에의 복수의 액세스 (읽어내 또는 기입해 액세스)의 결과를 표현합니다.
RoleStatus 이 클래스는, 롤의 액세스시에 발생할 가능성이 있는 다양한 문제를 설명합니다.
RoleUnresolved 미해결의 롤 (문제의 발생에 의해, 관계로부터 취득할 수 없었던 롤)을 표현합니다.
RoleUnresolvedList RoleUnresolvedList 는, RoleUnresolved 객체의 리스트를 표현합니다.
 

예외의 개요
InvalidRelationIdException 이 예외는, 관계에 대해서, 벌써 사용되고 있는 관계 ID 가 제공되었을 경우에 발행됩니다.
InvalidRelationServiceException 이 예외는, 제공된 관계 서비스가 무효인 경우에 발행됩니다.
InvalidRelationTypeException 관계형이 무효입니다.
InvalidRoleInfoException 이 예외는, 롤 정보에 대해, 최소치가 최대치보다 큰 경우에 발행됩니다.
InvalidRoleValueException 롤치가 무효입니다.
RelationException 이 클래스는, 관계의 관리중에 발행되는 예외의 슈퍼 클래스입니다.
RelationNotFoundException 이 예외는, 관계 서비스내에, 지정된 관계 ID 로 나타내지는 관계가 존재하지 않는 경우에 발행됩니다.
RelationServiceNotRegisteredException 이 예외는, 관계 서비스에의 액세스가 등록되지 않은 경우에 발행됩니다.
RelationTypeNotFoundException 이 예외는, 관계 서비스내에, 지정된 이름의 관계형이 존재하지 않는 경우에 발행됩니다.
RoleInfoNotFoundException 이 예외는, 지정된 관련형으로 지정된 이름의 롤 정보가 존재하지 않는 경우에 발행됩니다.
RoleNotFoundException 이 예외는, 관계에 포함되는 롤이 존재하지 않는 경우, 존재했다고 해도 읽기 불능인 경우, 또는 설정 불능인 경우에 발행됩니다.
 

패키지 javax.management.relation 의 설명

관계 서비스에 대해 정의합니다. 관계 서비스는, MBean 서버내의 MBean 간의 관계를 기록하기 위해서 사용됩니다. 관계 서비스 그 자체가 MBean 입니다. 1 대의 MBean 서버에, 복수 RelationService MBean 를 등록할 수 있습니다.

「관계형」은, MBean 간의 관계를 정의합니다. 그 관계에 대해 MBean 가 담당하는 「롤」을 포함합니다. 일반적으로, 1 개의 관계형에 2 개 이상의 롤이 포함됩니다.

「관계」는, 관계형의 이름 첨부의 인스턴스입니다. 관계에서는, 롤내의 특정의 MBean 는 ObjectName 에 의해 나타내집니다.

예를 들어, 어플리케이션 A 에 포함되는 모듈을 나타내는 Module MBean 가 있다고 합니다. DependsOn 관계형은, 그 외의 모듈에 의존하는 모듈의 관계를 표현할 수가 있습니다. 이 때문에, 모듈의 개시 또는 정지순서의 결정에 사용됩니다. DependsOn 관계형은,dependentdependedOn 의 2 개의 롤을 가집니다.

어느 롤도 typed 입니다. 이 때문에, 롤내에 표시되는 MBean 는, 롤의 형태의 인스턴스가 아니면 안됩니다. DependsOn 의 예에서는, 양쪽 모두의 롤이 Module 형이 됩니다.

모든 롤이 「카디나리티」를 가집니다. 카디나리티에 의해, 지정된 관계 인스턴스에 포함되는 특정의 롤내의 MBean 수에, 상한치와 하한치가 설정됩니다. 일반적으로은, 상한치, 하한치 모두 1 으로, 롤내의 MBean 수는 1 입니다. 카디나리티는, 관계 인스턴스 마다 롤내의 MBean 수를 제한할 뿐입니다. 관계형의 인스턴스수에 관계없이, 같은 롤내에는 같은 MBean 를 존재할 수 있습니다. DependsOn 의 예에서는, 어느 모듈을 의존할 수 있는 그 외의 모듈수에 제한은 없습니다. 그러나, 관계 인스턴스는, 항상 단일의 dependent 모듈과 단일의 dependedOn 모듈을 링크합니다.

관계형은,javax.management.relation.RelationTypeRelationType 인터페이스를 구현하는 객체 (일반적으로 javax.management.relation.RelationTypeSupportRelationTypeSupport)로서 명시적으로 작성할 수 있습니다. 관계 서비스의 createRelationType 메소드를 사용해, 암묵적으로 작성할 수도 있습니다.

관계 인스턴스는,javax.management.relation.RelationRelation 인터페이스를 구현하는 객체 (일반적으로 RelationSupport )로서 명시적으로 작성할 수 있습니다. RelationSupport 자체가 유효한 MBean 이므로, 옵션으로서 MBean 서버에 등록 가능합니다. 한편, 관계 인스턴스를 암묵적으로 작성하려면 , 관계 서비스의 createRelation 메소드를 사용합니다.

DependsOn 의 예는 다음과 같이 코드화할 수 있습니다.

import java.util. *;
import javax.management. *;
import javax.management.relation. *;

// ...
MBeanServer mbs = ...;

// Create the Relation Service MBean
ObjectName relSvcName = new ObjectName(":type=RelationService");
RelationService relSvcObject = new RelationService(true);
mbs.registerMBean(relSvcObject, relSvcName);

// Create an MBean proxy for easier access to the Relation Service
RelationServiceMBean relSvc =
MBeanServerInvocationHandler.newProxyInstance(mbs, relSvcName,
                                                  RelationServiceMBean.class,
                                                  false);

// Define the DependsOn relation type
RoleInfo[] dependsOnRoles = {
new RoleInfo("dependent", Module.class.getName()),
new RoleInfo("dependedOn", Module.class.getName())
};
relSvc.createRelationType("DependsOn", dependsOnRoles);

// Now define a relation instance "moduleA DependsOn moduleB"

ObjectName moduleA = new ObjectName(":type=Module, name=A");
ObjectName moduleB = new ObjectName(":type=Module, name=B");

Role dependent = new Role("dependent", Collections.singletonList(moduleA));
Role dependedOn = new Role("dependedOn", Collections.singletonList(moduleB));
Role[] roleArray = {dependent, dependedOn};
RoleList roles = new RoleList(Arrays.asList(roleArray));
relSvc.createRelation("A-DependsOn-B", "DependsOn", roles);

// Query the Relation Service to find what modules moduleA depends on
Map<ObjectName, List<String>> dependentAMap =
relSvc.findAssociatedMBeans(moduleA, "DependsOn", "dependent");
Set<ObjectName> dependentASet = dependentAMap.keySet();
// Set of ObjectName containing moduleB

도입된 버젼:
1.5
관련 항목:
Java SE 6 플랫폼의 JMX 테크놀러지에 관한 메뉴얼, 특히 「JMX 스펙, 버젼 1.4」(pdf)

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.