JavaTM Platform
Standard Ed. 6

javax.naming.event
인터페이스 EventContext

모든 슈퍼 인터페이스:
Context
기존의 서브 인터페이스의 일람:
EventDirContext


public interface EventContext
extends Context

문맥으로 지정된 객체가 변경되었을 때에 트리거되는 이벤트의 통지를 받는, 청취자의 등록/등록 해제에 관한 메소드를 포함합니다.

타겟

addNamingListener() 메소드에 있는 이름 파라미터는, 「타겟」이라고 불립니다. 타겟은 스코프와 함께, 청취자가 대상으로 하는 객체를 특정합니다. 아직 존재하지 않는 타겟으로 대해 전달 등록을 실시할 수 있습니다만, 서비스 프로바이더나 사용하는 프로토콜/서비스에 따라서는 지원 내용에 제한이 있는 경우가 있습니다.

어느 서비스가 기존의 타겟으로 대하는 전달 등록만을 지원하는 경우, 존재하지 않는 타겟을 등록하려고 하면(자), 가능한 한 빠른 시점에서 NameNotFoundException 가 throw 됩니다. throw 되는 타이밍은 addNamingListener() 를 호출하는 시점이 이상적입니다만, 그것이 가능하지 않는 경우는, 청취자는 NamingExceptionEvent 경유로 예외를 받습니다.

또, 기존의 타겟 밖에 등록하지 않는 서비스 프로바이더에서는, 청취자가 등록한 타겟이 이름 공간으로부터 삭제되면(자),NamingExceptionEvent (NameNotFoundException 를 포함한다)로부터 청취자에게 통지됩니다.

어플리케이션에서는 메소드 targetMustExist() 를 사용해, 존재하지 않는 타겟의 등록을 EventContext 가 지원하고 있는지를 확인할 수가 있습니다.

이벤트 소스

등록 메소드를 기동한 EventContext 인스턴스는, 생성한 (전망도 포함한다) 이벤트의 「이벤트 소스」입니다. 이벤트 소스는 타겟으로 지정한 객체일 필요는 없습니다. 타겟의 이름이 빈 상태(empty)인 경우만, 타겟으로 지정한 객체가 이벤트 소스가 됩니다. 즉, 타겟을 스코프 파라미터와 함께 사용해, 청취자가 관심을 가지는 객체를 특정합니다. 다만, 이벤트 소스는, 청취자가 등록한 EventContext 인스턴스가 됩니다.

예를 들어, 청취자가 다음의 등록을 행했다고 합니다.

        NamespaceChangeListener listener = ...;
        src.addNamingListener("x", SUBTREE_SCOPE, listener);
그 후에 객체명 "x/y" 가 삭제되면(자), 대응하는 NamingEvent (evt)에는 다음을 포함할 필요가 있습니다.
        evt.getEventContext() == src
        evt.getOldBinding(). getName(). equals("x/y")

게다가 청취자의 등록/등록 해제는 EventContext 인스턴스를 사용해 행해져 이름 공간의 대응 객체를 이용하지 않습니다. 프로그램의 일부에서 청취자를 삭제하는 경우,addNamingListener() 를 기동한 EventContext 인스턴스의 참조를 보존합니다 (청취자에 대해서 참조를 보존해, 나중에 삭제하기 위해서 필요하게 됩니다). 등록 해제를 실시하기 위해서(때문에),lookup() 를 실행해,EventContext 의 다른 인스턴스를 취득할 수 없습니다.

등록의 수명

등록한 청취자가 등록 해제되는 것은 다음의 경우입니다. 여기까지는, 미처리의 청취자를 가지는 EventContext 인스턴스가 그대로 존재해, 서비스 프로바이더로 유지됩니다.

청취자의 구현

등록/등록 해제 메소드에서는 NamingListener 의 인스턴스를 받습니다. 이것에는,NamingEvent 의 다양한 이벤트형에 대한 NamingListener 의 서브 인터페이스가 있습니다. 예를 들어,ObjectChangeListener 인터페이스는 NamingEvent.OBJECT_CHANGED 이벤트형에 대하는 것입니다. 복수의 이벤트형으로 전달 대상을 등록하려면 , 청취자의 구현으로 복수의 NamingListener 서브 인터페이스를 구현해,addNamingListener() 의 호출을 1 회 실시할 필요가 있습니다. 이것에 의해, 메소드 호출의 회수의 감소, 및 청취자의 코드 사이즈의 삭감에 가세해, 일부의 서비스 프로바이더에서는 등록을 최적화할 수가 있습니다.

thread 문제

일반적인 Context 인스턴스와 같이,EventContext 의 인스턴스는 thread에 대해서 안전이라고 하는 것은 아닙니다. 복수의 thread가 같은 EventContext 에 동시에 액세스 하고 있는 경우는 주의가 필요합니다. thread 문제의 자세한 것은,「패키지의 설명」을 참조해 주세요.

도입된 버젼:
1.3

필드의 개요
static int OBJECT_SCOPE
          타겟으로 지정된 객체에 관한 이벤트를 통지할지 어떨지를 지정하는 정수입니다.
static int ONELEVEL_SCOPE
          타겟으로 지정된 문맥의 객체에 관한 이벤트를 통지할지 어떨지를 지정하는 정수입니다.
static int SUBTREE_SCOPE
          타겟으로 지정된 문맥의 서브 트리에 있는 객체에 관한 이벤트를, 통지할지 어떨지를 지정하는 정수입니다.
 
인터페이스 javax.naming. Context 로부터 상속된 필드
APPLET , AUTHORITATIVE , BATCHSIZE , DNS_URL , INITIAL_CONTEXT_FACTORY , LANGUAGE , OBJECT_FACTORIES , PROVIDER_URL , REFERRAL , SECURITY_AUTHENTICATION , SECURITY_CREDENTIALS , SECURITY_PRINCIPAL , SECURITY_PROTOCOL , STATE_FACTORIES , URL_PKG_PREFIXES
 
메소드의 개요
 void addNamingListener (Name  target, int scope, NamingListener  l)
          청취자를 추가해, 타겟 및 스코프로 특정 객체의 변경시에 트리거된, 이름 첨부 이벤트를 받아들이도록(듯이) 합니다.
 void addNamingListener (String  target, int scope, NamingListener  l)
          청취자를 추가해, 캐릭터 라인의 타겟명 및 스코프로 특정한 객체의 변경시에, 트리거된 이름 첨부 이벤트를 받아들이도록(듯이) 합니다.
 void removeNamingListener (NamingListener  l)
          청취자를 삭제해, 이 EventContext 로 트리거된 네이밍 이벤트를 납득할 수 없게 합니다.
 boolean targetMustExist ()
          존재하지 않는 타겟으로, 청취자가 전달 처리를 등록할 수 있을지 어떨지 판정합니다.
 
인터페이스 javax.naming. Context 로부터 상속된 메소드
addToEnvironment , bind , bind , close , composeName , composeName , createSubcontext , createSubcontext , destroySubcontext , destroySubcontext , getEnvironment , getNameInNamespace , getNameParser , getNameParser , list , list , listBindings , listBindings , lookup , lookup , lookupLink , lookupLink , rebind , rebind , removeFromEnvironment , rename , rename , unbind , unbind
 

필드의 상세

OBJECT_SCOPE

static final int OBJECT_SCOPE
타겟으로 지정된 객체에 관한 이벤트를 통지할지 어떨지를 지정하는 정수입니다.

이 정수의 값은 0 입니다.

관련 항목:
정수 필드치

ONELEVEL_SCOPE

static final int ONELEVEL_SCOPE
타겟으로 지정된 문맥의 객체에 관한 이벤트를 통지할지 어떨지를 지정하는 정수입니다. 타겟으로 지정된 문맥은 제외합니다.

이 정수의 값은 1 입니다.

관련 항목:
정수 필드치

SUBTREE_SCOPE

static final int SUBTREE_SCOPE
타겟으로 지정된 문맥의 서브 트리에 있는 객체에 관한 이벤트를, 통지할지 어떨지를 지정하는 정수입니다. 타겟으로 지정된 객체도 포함합니다.

이 정수의 값은 2 입니다.

관련 항목:
정수 필드치
메소드의 상세

addNamingListener

void addNamingListener(Name  target,
                       int scope,
                       NamingListener  l)
                       throws NamingException 
청취자를 추가해, 타겟 및 스코프로 특정 객체의 변경시에 트리거된, 이름 첨부 이벤트를 받아들이도록(듯이) 합니다. 이것들 이벤트의 이벤트 소스가 이 문맥이 됩니다. 이벤트 소스 및 타겟으로 도착해 클래스의 설명을 참조해 주세요. 스코프가 어떻게 등록에 영향을 줄까에 대해서는, 정수 OBJECT_SCOPE,ONELEVEL_SCOPE, 및 SUBTREE_SCOPE 의 설명을 참조해 주세요.

target 가 문맥을 지정할 필요가 있는 것은,scopeONELEVEL_SCOPE 인 경우만입니다. scopeOBJECT_SCOPE 또는 SUBTREE_SCOPE 의 몇개의 경우,target 는 비문맥을 지정할 수가 있습니다. 예를 들어,target 가 문맥인가 어떤가가 사전이 모르는 경우에, 호출측이 target 를 루트로 하는 서브 트리 (존재하지 않는 경우도 있다)를 등록할 때는,SUBTREE_SCOPE 를 사용해 비문맥을 지정합니다.

청취자가 이벤트의 통지를 받으면(자),addNamingListener() 가 실행되어 있지 않은 thread로 청취자가 기동됩니다. 복수의 thread가 같은 EventContext 에 동시에 액세스 하고 있는 경우는 주의가 필요합니다. thread 문제의 자세한 것은,「패키지의 설명」을 참조해 주세요.

파라미터:
target - 이 문맥에 관련해 해석되는 null 이외의 이름
scope - OBJECT_SCOPE,ONELEVEL_SCOPE, 또는 SUBTREE_SCOPE 의 어느쪽이든 1 개(살)
l - null 이외의 청취자
예외:
NamingException - 청취자의 추가중에 문제가 발견되었을 경우
관련 항목:
removeNamingListener(javax.naming.event.NamingListener)

addNamingListener

void addNamingListener(String  target,
                       int scope,
                       NamingListener  l)
                       throws NamingException 
청취자를 추가해, 캐릭터 라인의 타겟명 및 스코프로 특정한 객체의 변경시에, 트리거된 이름 첨부 이벤트를 받아들이도록(듯이) 합니다. 자세한 것은,Name 를 받는 overload를 참조해 주세요.

파라미터:
target - 이 문맥에 관련해 해결되는, 객체의 null 이외의 캐릭터 라인명
scope - OBJECT_SCOPE,ONELEVEL_SCOPE, 또는 SUBTREE_SCOPE 의 어느쪽이든 1 개(살)
l - null 이외의 청취자
예외:
NamingException - 청취자의 추가중에 문제가 발견되었을 경우
관련 항목:
removeNamingListener(javax.naming.event.NamingListener)

removeNamingListener

void removeNamingListener(NamingListener  l)
                          throws NamingException 
청취자를 삭제해, 이 EventContext 로 트리거된 네이밍 이벤트를 납득할 수 없게 합니다. 이 EventContext 를 사용해, 아마 다른 타겟/스코프 인수를 이용해, 1 회 이상 청취자 등록을 행한 가능성이 있습니다. 이 메소드의 기동 후는, 청취자는 이벤트 소스로서 이 EventContext 인스턴스로 이벤트를 받을 수가 없습니다 (발송 처리중의 이벤트는 제외하다). 청취자가 이 EventContext 인스턴스에 등록되지 않은 경우, 이 메소드는 아무것도 실행하지 않습니다.

파라미터:
l - null 이외의 청취자
예외:
NamingException - 청취자의 삭제중에 문제가 발견되었을 경우
관련 항목:
addNamingListener(javax.naming.Name, int, javax.naming.event.NamingListener)

targetMustExist

boolean targetMustExist()
                        throws NamingException 
존재하지 않는 타겟으로, 청취자가 전달 처리를 등록할 수 있을지 어떨지 판정합니다.

반환값:
타겟이 존재할 필요가 있는 경우는 true. 타겟이 존재할 필요가 없는 경우는 false
예외:
NamingException - 이 문맥 동작을 판정할 수 없는 경우

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