JavaTM Platform
Standard Ed. 6

패키지 javax.management

Java Management Extensions 의 코어 클래스를 제공합니다.

참조처:
          설명

인터페이스의 개요
Descriptor JMX 요소의 추가 메타데이타.
DescriptorAccess 이 인터페이스는, JMX 컴퍼넌트에 관련지을 수 있었던 Descriptor 클래스의 기술자 (MBean, MBeanInfo, MBeanAttributeInfo, MBeanNotificationInfo, MBeanOperationInfo, MBeanParameterInfo)에게 액세스 하는 목적으로 사용됩니다.
DescriptorRead MBeanInfo 등의 관리 인터페이스 요소의 Descriptor 를 읽어내기 위한 인터페이스입니다.
DynamicMBean Dynamic MBean (동적 관리 인터페이스를 공개하는 MBean)에 구현하는 메소드를 정의합니다.
MBeanRegistration MBean 서버에의 등록 또는 MBean 서버로부터의 등록 해제의 전후에 다양한 오퍼레이션을 실행하기 위해(때문에), MBean 에 의해 구현됩니다.
MBeanServer 에이전트측에서 MBean 를 조작하기 위한 인터페이스입니다.
MBeanServerConnection 이 인터페이스는, MBean 서버 (로컬 또는 원격)와의 통신 방법을 나타냅니다.
MBeanServerDelegateMBean MBeanServerDelegate 클래스의 객체의 관리 인터페이스를 정의합니다.
NotificationBroadcaster Notification 를 발행하는 MBean 가 구현하고 있는 인터페이스.
NotificationEmitter Notification 를 발행하는 MBean 가 구현하고 있는 인터페이스.
NotificationFilter 통지 필터로서 기능하는 모든 클래스에 의해 구현됩니다.
NotificationListener 통지의 수신을 바라는 객체에 의해 구현될 필요가 있습니다.
PersistentMBean 이 클래스는, MBean 에 의해 구현되는 인터페이스 (지속 인터페이스)입니다.
QueryExp 데이타베이스 쿼리 「where clauses」내에서 사용 가능한 관계 제약을 나타냅니다.
ValueExp 관계식의 인수로서 건네줄 수가 있는 값을 나타냅니다.
 

클래스의 개요
Attribute 이름과 값을 관련짓는 것으로, MBean 속성을 표현합니다.
AttributeChangeNotification MBean 에 의해 송신되는 속성 변경 통지를 정의합니다.
AttributeChangeNotificationFilter 이 클래스는,속성 변경 통지 NotificationFilter 인터페이스를 구현합니다.
AttributeList MBean 의 속성의 값의 리스트를 나타냅니다.
AttributeValueExp 관계 제약의 인수로서 사용되는 속성을 나타냅니다.
DefaultLoaderRepository 추천 되고 있지 않습니다.  대신에, MBeanServer.getClassLoaderRepository() (을)를 사용합니다.
ImmutableDescriptor 불변 기술자
JMX JMX API 로부터의 static 메소드입니다.
MBeanAttributeInfo 관리용으로서 공개되는 MBean 속성을 기술합니다.
MBeanConstructorInfo MBean 에 의해 공개되는 생성자 을 기술합니다.
MBeanFeatureInfo MBean 기술 객체에 일반 정보를 제공합니다.
MBeanInfo MBean 에 의해 공개된 관리 인터페이스 (관리 오퍼레이션에 사용할 수 있는 속성과 조작세트)를 기술합니다.
MBeanNotificationInfo MBeanNotificationInfo 클래스는, MBean 에 의해 발행된, 지정의 통지 Java 클래스에 대한 복수가 다른 통지 인스턴스의 특성을 기술합니다.
MBeanOperationInfo MBean 에 의해 공개되는 관리 오퍼레이션을 기술합니다.
MBeanParameterInfo MBean 에 의해 공개되는 오퍼레이션의 인수를 기술합니다.
MBeanPermission MBeanServer 오퍼레이션의 액세스를 제어하는 액세스권입니다.
MBeanServerBuilder 이 클래스는, 디폴트 MBeanServer 구현을 작성하는 빌더를 나타냅니다.
MBeanServerDelegate 관리의 시점에서 MBean 서버를 표현합니다.
MBeanServerFactory MBean 서버 참조를 제공합니다.
MBeanServerInvocationHandler MBean 의 관리 인터페이스내에서, MBean 서버로부터 MBean 에 메소드를 건네주는 InvocationHandler 입니다.
MBeanServerNotification MBean 서버에 의해, MBeanServerDelegate MBean 로부터 발행되는 통지를 나타냅니다.
MBeanServerPermission MBeanServer 관련의 액션을 실행하기 위한 액세스권.
MBeanTrustPermission 이 액세스권은, 서명자 또는 코드 베이스의 「trust」를 나타냅니다.
Notification Notification 클래스는, MBean 가 발행하는 통지를 나타냅니다.
NotificationBroadcasterSupport NotificationEmitter 인터페이스의 구현을 제공합니다.
NotificationFilterSupport NotificationFilter 인터페이스의 구현을 제공합니다.
ObjectInstance MBean 의 객체명과 클래스명을 나타냅니다.
ObjectName MBean 의 객체명, 또는 복수의 MBean 명에 일치하는 패턴을 나타냅니다.
Query 쿼리객체 제약을 구축합니다.
QueryEval 특정의 MBean 서버의 문맥으로 쿼리를 실행합니다.
StandardEmitterMBean Java 인터페이스의 리플렉션에 의해 관리 인터페이스를 결정해, 통지를 발행하는 MBean 입니다.
StandardMBean Java 인터페이스의 리플렉션에 의해 관리 인터페이스를 결정하는 MBean 입니다.
StringValueExp 관계 제약의 인수가 되는 캐릭터 라인을 나타냅니다.
 

예외의 개요
AttributeNotFoundException 지정된 속성이 존재하지 않는지, 취득할 수 없습니다.
BadAttributeValueExpException 쿼리를 작성하는 메소드에 무효인 MBean 속성이 건네받았을 경우에 throw 됩니다.
BadBinaryOpValueExpException 쿼리를 작성하는 메소드에 무효인 식이 건네받았을 경우에 throw 됩니다.
BadStringOperationException 쿼리를 작성하는 메소드에 무효인 캐릭터 라인 오퍼레이션이 건네받았을 경우에 throw 됩니다.
InstanceAlreadyExistsException MBean 는 벌써 레포지트리에 등록되어 있습니다.
InstanceNotFoundException 지정된 MBean 가 리포지터리(repository)내에 존재하지 않습니다.
IntrospectionException MBean 의 인트로스페크션의 실행시에 발생한 예외입니다.
InvalidApplicationException MBean 의 서브 쿼리의 식 또는 MBean 의 수식 속성의 식의 클래스가 잘못되어 있는 경우에 throw 됩니다.
InvalidAttributeValueException 지정된 값은, 속성에 대한 유효한 값이 아닙니다.
JMException JMX 구현으로부터 throw 되는 예외입니다.
JMRuntimeException JMX 구현으로부터 반환되는 실행시 예외입니다.
ListenerNotFoundException 지정된 MBean 청취자가 리포지터리(repository)내에 존재하지 않습니다.
MalformedObjectNameException 캐릭터 라인의 형식이 유효한 ObjectName 에 대응하고 있습니다.
MBeanException 에이전트내의 MBean 메소드에 의해 throw 되는 사용자 정의의 예외를 나타냅니다.
MBeanRegistrationException MBeanRegistration 인터페이스의 preRegister() 메소드와 preDeregister() 메소드에 의해 throw 되는 예외를 랩 합니다.
NotCompliantMBeanException MBean 서버에 JMX 준거의 MBean 가 아닌 객체를 등록하려고 했을 경우에 발행되는 예외입니다.
OperationsException MBean 의 오퍼레이션의 실행시에, MBean 서버내에서 throw 되는 예외를 나타냅니다.
ReflectionException java.lang.reflect 클래스를 사용해 MBean 상의 메소드를 호출할 때, MBean 서버내에서 throw 되는 예외를 나타냅니다.
RuntimeErrorException 에이전트내에서 java.lang.Error 가 발생했을 경우, 캐치 해,RuntimeErrorException 으로서 재throw 할 필요가 있습니다.
RuntimeMBeanException 에이전트내의 MBean 메소드에 의해 throw 되는 실행시 예외를 나타냅니다.
RuntimeOperationsException MBean 로 오퍼레이션의 실행시에 에이전트내에서 throw 되는 실행시 예외를 나타냅니다.
ServiceNotFoundException 요구된 서비스가 지원되어 있지 않은 경우에 발행되는 예외를 나타냅니다.
 

주석형의 개요
DescriptorKey 주석 요소와 Descriptor 내의 필드와의 관계를 기술하는 메타 주석.
MXBean 인터페이스에 대해서, MXBean 인터페이스이다, 또는 MXBean 인터페이스는 아니라고 하는 마크를 명시적으로 붙이기 위한 주석입니다.
 

패키지 javax.management 의 설명

Java Management Extensions 의 코어 클래스를 제공합니다.

Java Management Extensions (JMXTM) API 는, 관리 및 감시용의 표준 API 입니다. 일반적으로, 다음의 용도로 사용됩니다.

JMX API 는, 시스템이나 네트워크의 관리 솔루션에도 사용됩니다.

remote administration 프로그램은, JMX API 의 원격 접근 기능을 이용해, 실행중의 어플리케이션에 원격 접근 할 수 있습니다.

MBean

JMX API 의 기본 개념은 「MBean」입니다. MBean 는, 자원을 나타내는 이름 첨부의 관리 객체입니다. 다음과 같은 관리 인터페이스를 가집니다.

예를 들어, 어플리케이션의 구성을 나타내는 MBean 는, 복수가 다른 구성 항목을 나타내는 속성을 가질 수가 있습니다. CacheSize속성을 읽어냈을 경우, 그 항목의 현재의 값이 돌려주어집니다. 동속성을 기입했을 경우, 항목이 갱신되어 실행중의 어플리케이션의 동작이 변화할 가능성이 있습니다. save 등의 오퍼레이션을 실행해, 현재의 구성을 영속적으로 포함할 수가 있습니다. ConfigurationChangedNotification등의 통지는, 구성의 변경마다 송신할 수 있습니다.

JMX API 의 표준적인 사용 방법에서는, MBean 는 Java 객체로서 구현됩니다. 그러나, 다음에 설명하는 대로, 일반적으로 이러한 객체가 직접 참조될 것은 없습니다.

Standard MBean

MBean 구현을 단순화 하기 위한(해), JMX API 에는 「Standard MBean」의 개념이 도입되고 있습니다. StandardMBean 는, JavaBeansTM의 네이밍 패턴과 자주(잘) 닮은 네이밍 패턴을 사용해 Java 인터페이스로부터 속성과 오퍼레이션을 추측할 수 있는 MBean입니다. 예를 들어, 다음과 같은 인터페이스가 있다고 합니다.

    public interface ConfigurationMBean {
        public int getCacheSize();
        public void setCacheSize(int size);
        public long getLastChangedTime();
        public void save();
    }
      

getCacheSize 메소드와 setCacheSize 메소드는,int형으로 불려 간 CacheSize (JavaBeans 의 규칙과는 달라, 최초의 문자가 알파벳의 대문자)의 읽어내 기입 속성을 정의합니다.

getLastChangedTime 메소드는,long 형으로 불려 간 LastChangedTime의 속성을 정의합니다. 이것은,setLastChangedTime 메소드가 존재하지 않기 때문에, 읽기 전용 속성입니다.

save 메소드는, 오퍼레이션으로 불려 간 save 를 정의합니다. get,set, 또는 is 로 시작되는 이름을 가지지 않기 때문에, 속성이 아닙니다.

Standard MBean 의 정확한 네이밍 패턴의 상세한 것에 대하여는,JMX 스펙을 참조해 주세요.

이 관리 인터페이스로, MBean 인 Java 객체를 작성하는 방법은 2 방법 존재합니다. 1 개(살)은, Java 인터페이스의 이름으로부터 MBean접미사(suffix)을 제외한 이름을 가지는 클래스에 속하는 객체를 작성하는 방법입니다. 예에서는, 객체는,ConfigurationMBean와 같은 Java 패키지의 Configuration 클래스에 속하게 됩니다. 이제(벌써) 1개의 방법에서는,StandardMBean 클래스를 사용합니다.

MXBean

MXBean 는 Standard MBean 의 파생형입니다. MXBean 에서는, 복잡한 형태는 javax.management.openmbean 패키지로 정의된 표준 세트의 형태에 매핑 됩니다. MXBean 의 사용이 적절한 경우는, 그것을 사용하지 않으면 MBean 인터페이스로 어플리케이션 고유의 클래스를 참조할 필요가 있는 경우입니다. 자세한 것은,MXBean 의 스펙을 참조해 주세요.

Dynamic MBean

Dynamic MBean 는, 관리 인터페이스를 실행시에 정의하는 MBean 입니다. 예를 들어, 구성 MBean 는, XML 파일의 해석에 의해, 공개하는 속성의 이름과 형태를 결정할 수 있습니다.

DynamicMBean 인터페이스를 구현하는 클래스의 Java 객체는 Dynamic MBean 가 됩니다.

Open MBean

Open MBean 는 Dynamic MBean 의 일종이며, 그 속성 및 오퍼레이션 파라미터의 형태와 반환값은, 몇개의 사전 정의 끝난 Java 클래스를 사용해 구축됩니다. Open MBean 는, 어플리케이션 고유의 형태 (비 Java 프로그램을 포함한다)에 반드시 액세스 할 수 있다고는 할 수는 없는 remote administration 프로그램을 사용해, 오퍼레이션을 간편화합니다. Open MBean 는, 패키지 javax.management.openmbean 로 정의됩니다.

Model MBean

Model MBean 는, 관리 인터페이스와 부하의 관리 대상 자원의 브릿지로서 기능하는 Dynamic MBean 의 일종입니다. 관리 인터페이스와 관리 대상 자원은, 어느쪽이나 Java 객체로서 지정됩니다. 복수가 다른 관리 인터페이스 및 관리 대상 자원으로, 같은 Model MBean 구현을 반복해 이용할 수 있습니다. 또, Model MBean 구현은, 지속성 기능, 캐싱 기능등의 공통 기능을 제공할 수 있습니다. Model MBean 는, 패키지 javax.management.modelmbean 로 정의됩니다.

MBean 서버

MBean 를 사용하기 위해서는, MBean 서버에 등록할 필요가 있습니다. MBean 서버는, MBean의 리포지터리(repository)입니다. 일반적으로, MBean 서버를 이용하지 않으면, MBean 에는 액세스 할 수 없습니다. 코드는, MBean 를 직접 구현하는 Java 객체에 액세스 하는 대신에, MBean 의 이름을 지정해 MBean 서버 경유로 MBean 에 액세스 하게 되었습니다. 각 MBean 는, MBean 서버내에,ObjectName 클래스에 의해 정의된 일의의 이름을 가집니다.

MBean 서버는,MBeanServer 인터페이스를 구현하는 객체입니다. 무엇보다 편리한 MBean 서버는,Platform MBean Server 입니다. 이것은, 단일의 Java 가상 머신내에서 동작하는 다른 관리 컴퍼넌트로 공유 가능한 단독의 MBean 서버입니다. Platform MBean Server 에는,ManagementFactory.getPlatformMBeanServer() 메소드로 액세스 합니다.

어플리케이션 코드에서도,javax.management.MBeanServerFactoryMBeanServerFactory 클래스를 사용해 새로운 MBean 서버를 작성하거나 기존의 MBean 서버에 액세스 하거나 할 수 있습니다.

MBean 서버에서의 MBean 의 작성

MBean 는 2 방법의 방법으로 작성할 수 있습니다. 우선, MBean 로 하는 Java 객체를 구축해,registerMBean 메소드를 사용해, 이 Java 객체를 MBean 서버에 등록하는 방법이 있습니다. 이제(벌써) 1 개의 방법에서는, 몇개의 createMBean 메소드를 사용해, 단일의 오퍼레이션으로 MBean를 작성해, 등록합니다.

registerMBean 메소드는, 로컬에서는 간단하게 사용할 수 있습니다만, 원격에서는 사용할 수 없습니다. createMBean 메소드는 원격로부터 사용할 수 있습니다만, 클래스 로딩의 문제에 주의를 향하는 것이 필요한 경우도 있습니다.

MBeanRegistration 인터페이스를 구현하고 있는 MBean 는, MBean 서버에의 등록시 또는 MBean 서버로부터의 등록 해제시에 액션을 실행할 수 있습니다.

MBean 서버내의 MBean 에의 액세스

다음의 예의 같게,ObjectName nameMBeanServer mbs 를 지정하는 것으로써, 속성과 오퍼레이션에 액세스 할 수 있습니다.

    int cacheSize = mbs.getAttribute(name, "CacheSize");
    Attribute  newCacheSize =
        new Attribute("CacheSize", new Integer(2000));
    mbs.setAttribute(name, newCacheSize);
    mbs.invoke(name, "save", new Object[0], new Class[0]);
      

MBean 의 관리 인터페이스에 대응하는 Java 인터페이스가 있는 경우는, 다음과 같이, MBean 프록시를 이용할 수 있습니다.

    ConfigurationMBean conf =
        JMX.newMBeanProxy (mbs, name, ConfigurationMBean.class);
    int cacheSize = conf.getCacheSize();
    conf.setCacheSize(2000);
    conf.save();
      

MBean 프록시는 매우 편리합니다. 2 번째의 예에서는, 최초의 예와 같은 MBeanServer 오퍼레이션을 호출합니다.

MBean 서버로, 특정의 패턴에 일치하는 이름을 가지는 MBean 나, 특정의 제약을 채우는 속성을 가지는 MBean를 조회할 수 있습니다. 이름 패턴의 구축에는 ObjectName 클래스를 사용해, 제약의 구축에는 Query 클래스를 사용합니다. 그 후,queryNames 메소드와 queryMBeans 메소드에 의해 쿼리가 실행됩니다.

통지

통지는,Notification 클래스 또는 서브 클래스의 인스턴스입니다. Java 클래스에 가세해, 같은 클래스의 통지의 구별로 사용하는 형태 캐릭터 라인을 가지고 있습니다.

통지를 발행하는 MBean 는,javax.management.NotificationBroadcasterNotificationBroadcaster 또는 NotificationEmitter 인터페이스를 구현할 필요가 있습니다. 일반적으로, 이러한 인터페이스를 구현하기 위해서,javax.management.NotificationBroadcasterSupportNotificationBroadcasterSupport 의 서브 클래스화인가, 이 클래스의 인스턴스의 위양을 합니다.

통지는, 「청취자」를 사용해 수신할 수 있습니다. 청취자는,NotificationListener 인터페이스를 구현하는 객체입니다. MBeanServer.addNotificationListener(ObjectName, NotificationListener, NotificationFilter, Object) 메소드를 사용해, MBean에 청취자를 추가할 수 있습니다. 이 메소드에 필터를 적용해, 필요한 통지만을 선택할 수도 있습니다. 필터는,NotificationFilter 인터페이스를 구현하는 객체입니다.

MBean 는, 같은 MBean 서버상의 그 외의 MBean에 의해 발행되는 통지의 청취자가 될 수가 있습니다. 이 경우, MBean 는,NotificationListener 를 구현해,MBeanServer.addNotificationListener(ObjectName, ObjectName, NotificationFilter, Object) 메소드를 이용해 통지를 대기합니다.

MBean 에의 원격 접근

MBean 서버에는, 연결기 경유로 원격 접근 할 수 있습니다. 연결기를 사용하면(자), 원격의 Java 어플리케이션이, 로컬의 Java 어플리케이션과 실질적으로 같은 방법으로 MBean 서버에 액세스 할 수 있습니다. 연결기는,javax.management.remote 패키지에 정의되고 있습니다.

JMX 스펙에는, 어댑터의 개념도 정의되고 있습니다. 어댑터는, SNMP 나 HTML 등의 요구의 프로토콜을 변환해, MBean 서버에 액세스 합니다. 이 때문에, 예를 들어 SNMP GET 오퍼레이션에 의해, MBean 서버상에서 getAttribute 가 실행됩니다.

도입된 버젼:
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 도 참조해 주세요.