JavaTM Platform
Standard Ed. 6

패키지 javax.naming.event

네이밍 및 디렉토리 서비스에 액세스 하는 경우, 이벤트 통지를 지원하고 있습니다.

참조처:
          설명

인터페이스의 개요
EventContext 문맥으로 지정된 객체가 변경되었을 때에 트리거되는 이벤트의 통지를 받는, 청취자의 등록/등록 해제에 관한 메소드를 포함합니다.
EventDirContext 디렉토리 문맥으로 지정된 객체가 변경되었을 때에 트리거된 이벤트의 통지를 받는, 청취자의 등록에 관한 메소드를 포함합니다.
NamespaceChangeListener 이름 공간의 변경을 대상으로 하는 청취자가, 구현에 필요한 메소드를 지정합니다.
NamingListener 이 인터페이스는,NamingEvent 를 처리하는 청취자측 인터페이스의 루트입니다.
ObjectChangeListener OBJECT_CHANGED 의 이벤트형을 가지는 NamingEvent 의 청취자가 구현해야 하는 메소드를 지정합니다.
 

클래스의 개요
NamingEvent 이 클래스는, 네임 서비스/디렉토리 서비스로 트리거된 이벤트를 나타냅니다.
NamingExceptionEvent 이 클래스는,NamingEvent 를 통지하는 청취자의 정보를 수집하는 순서/프로세스가 NamingException 을 throw 했을 때에, 트리거되는 이벤트를 나타냅니다.
 

패키지 javax.naming.event 의 설명

네이밍 및 디렉토리 서비스에 액세스 하는 경우, 이벤트 통지를 지원하고 있습니다.

이 패키지는, Java Naming and Directory InterfaceTM (JNDI)의 이벤트 통지 조작을 정의합니다. JNDI  는 Java 프로그램 언어로 작성된 어플리케이션에 네이밍 기능 및 디렉토리 기능을 제공합니다. JNDI 는, 특정의 네이밍 또는 디렉토리 서비스 구현과는 독립해 설계되고 있습니다. 이 때문에, 새로운 서비스 및 벌써 전개되고 있는 여러가지 서비스에, 공통의 방법으로 액세스 할 수 있습니다.

네이밍 이벤트

이 패키지로, 네이밍 및 디렉토리 서비스로 생성되는 이벤트를 표시하려면 ,NamingEvent 클래스를 정의합니다. EventContextEventDirContext 라고 하는,ContextDirContext 의 서브 인터페이스도 정의합니다. 이 서브 인터페이스를 사용해, 어플리케이션은 문맥으로 트리거된 이벤트에 그 대상을 등록합니다.

NamingEvent 란, 네이밍 및 디렉토리 서비스로 발생하는 이벤트입니다. 네이밍 이벤트에는 다음의 2 종류의 카테고리가 있습니다.

이벤트의 각 카테고리는,NamespaceChangeListener,ObjectChangeListener 등의 대응하는 청취자에 의해 처리됩니다.

예를 들어, 어플리케이션의 경우, 변경하는 대상을 다음과 같이 객체에 등록할 수 있습니다.

EventContext src = 
    (EventContext)(new InitialContext()). lookup("o=wiz, c=us");
src.addNamingListener("ou=users", EventContext.ONELEVEL_SCOPE,
    new ChangeHandler());
...
class ChangeHandler implements ObjectChangeListener {
    public void objectChanged(NamingEvent evt) {
        System.out.println(evt.getNewBinding());
    }
    public void namingExceptionThrown(NamingExceptionEvent evt) {
        System.out.println(evt.getException());
    }
}

thread 문제

이벤트가 청취자에게 발송 되는 경우, 청취자 메소드 (objectChanged() 등)는,addNamingListener() 에의 호출이 실행된 thread 이외로 실행 가능합니다. 사용하는 thread는, 서비스 프로바이더에 의해 선택됩니다. 이벤트가 복수의 청취자에게 발송 되는 경우, 별개의 thread로 병행해 청취자 메소드를 실행하려면 , 서비스 프로바이더가 선택 ( 및 일반적으로 장려된다)하는 일이 있습니다.

청취자 인스턴스가 NamingEvent.getEventContext() 를 호출했을 경우, 다른 thread로 병행해 동일한 문맥을 처리하고 있을 가능성을 고려할 필요가 있습니다. 똑같이, 청취자가 addNamingListener() 를 개입시켜 등록될 때의 thread는, 서비스 프로바이더가 신규에 작성한 thread로 청취자를 나중에 호출할 가능성이 있는 것을 고려할 필요가 있습니다. 문맥인스턴스는, 일반적으로 thread에 대해서 안전한 것을 보증되어 있지 않기 때문에, 모든 문맥 조작은 필요에 따라서 동기화해 주세요.

예외 처리

청취자가 이벤트에 문맥을 등록하는 경우, 이벤트 생성에 필요한 정보를 수집하기 위해(때문에), 문맥에 내부 처리가 필요한 일이 있습니다. 예를 들어, 최종적으로는 이벤트에 변환되는 것 같은 변경의 대상 등록을 서버에 요구할 필요가 있는 경우 등입니다. 이벤트 정보를 수집할 수 없게 하는 예외가 발생했을 경우, 청취자는 이벤트의 정보를 받을 수가 없습니다. 이러한 예외가 발생하면(자),NamingExceptionEvent 가 트리거되어 청취자에게 통지합니다. 상기의 샘플 코드로 표시된 것처럼 청취자의 namingExceptionThrown() 메소드가 불려 가 청취자는 자동적으로 등록 해제가 됩니다.

패키지의 스펙

JNDI API 스펙과 관련 문서에 대해서는, 「JNDI 의 문서」를 참조해 주세요.

도입된 버젼:
1.3

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 도 참조해 주세요.