Class DirectoryManager

Class DirectoryManager

public class DirectoryManager
extends NamingManager

이 클래스는 DirContext 구현을 지원하기 위한 메서드를 담고 있어요. 이 클래스는 NamingManager의 확장이에요. 객체 팩토리와 상태 팩토리에 접근하고, 연합(federation)을 지원하기 위한 연속 컨텍스트(continuation context)를 얻기 위해 서비스 공급자가 사용하는 메서드를 담고 있어요. DirectoryManager는 여러 스레드의 동시 접근에 안전해요. 달리 명시되지 않는 한, 어떤 메서드에 전달되는 Name, Attributes 또는 환경 매개변수는 호출자가 소유해요. 구현은 그 객체를 수정하거나 참조를 유지하지 않지만, 클론이나 복사본에 대한 참조를 유지할 수 있어요.

getContinuationDirContext

public static DirContext getContinuationDirContext(CannotProceedException cpe)
                                            throws NamingException

DirContext 연산을 계속할 컨텍스트를 만들어요. NamingManager.getContinuationContext()와 똑같이 동작하고, 반환되는 연속 컨텍스트가 DirContext라는 점만 달라요.

  • Parameters: cpe - 이 연속(continuation)을 촉발한, null이 아닌 예외
  • Returns: 연산을 계속하기 위한, null이 아닌 DirContext 객체
  • Throws: NamingException - 네이밍 예외가 발생했을 때
  • See Also: NamingManager.getContinuationContext(CannotProceedException)

getObjectInstance

public static Object getObjectInstance(Object refInfo,
 Name name,
 Context nameCtx,
 Hashtable<?,?> environment,
 Attributes attrs)
                                throws Exception

지정된 객체, 속성, 환경에 대한 객체의 인스턴스를 만들어요. 이 메서드는 NamingManager.getObjectInstance와 다음 차이점을 제외하고 같아요:

  • 객체와 연관된 속성을 담은 Attributes 매개변수를 받아들여요. DirObjectFactory가 디렉터리에서 조회하는 수고를 줄이기 위해 이 속성을 사용할 수 있어요.
  • 시도되는 객체 팩토리는 ObjectFactory 또는 DirObjectFactory 중 하나를 구현해야 해요. DirObjectFactory를 구현하면 DirObjectFactory.getObjectInstance()가 사용되고, 그렇지 않으면 ObjectFactory.getObjectInstance()가 사용돼요.

DirContext 인터페이스를 구현하는 서비스 공급자는 NamingManager.getObjectInstance()가 아니라 이 메서드를 사용해야 해요.

  • Parameters: refInfo - 객체를 만들, null일 수 있는 객체
  • Returns: refInfo와 attrs를 사용해 만든 객체; 팩토리가 객체를 만들 수 없으면 refInfo
  • Throws: NamingException - URL 컨텍스트를 얻으려는 동안 네이밍 예외가 발생했거나, 접근한 팩토리 중 하나가 NamingException을 던졌을 때
  • Since: 1.3
  • See Also: NamingManager.getURLContext(java.lang.String, java.util.Hashtable), DirObjectFactory, DirObjectFactory.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable, javax.naming.directory.Attributes)

getStateToBind

public static DirStateFactory.Result getStateToBind(Object obj,
 Name name,
 Context nameCtx,
 Hashtable<?,?> environment,
 Attributes attrs)
                                             throws NamingException

원래 객체와 그 속성이 주어졌을 때 바인딩할 객체의 상태를 가져와요. 이 메서드는 NamingManager.getStateToBind와 다음 차이점을 제외하고 비슷해요:

  • DirContext.bind() 메서드에 전달된 속성을 담은 Attributes 매개변수를 받아들여요.
  • 바인딩할 객체와 바인딩에 동반할 속성을 담은, null이 아닌 DirStateFactory.Result 인스턴스를 반환해요. 객체나 속성 중 하나는 null일 수 있어요.
  • 시도되는 상태 팩토리는 각각 StateFactory 또는 DirStateFactory 중 하나를 구현해야 해요. DirStateFactory를 구현하면 DirStateFactory.getStateToBind()가 호출되고, 그렇지 않으면 StateFactory.getStateToBind()가 호출돼요.

DirContext 인터페이스를 구현하는 서비스 공급자는 NamingManager.getStateToBind()가 아니라 이 메서드를 사용해야 해요. 시도할 상태 팩토리 목록이 어떻게 결정되는지에 대한 설명은 NamingManager.getStateToBind()를 참조하세요. 이 메서드가 반환하는 객체는 호출자가 소유해요. 구현은 이후에 수정하지 않아요. 그것은 마찬가지로 호출자가 소유하는 새 Attributes 객체 또는 원래 attrs 매개변수에 대한 참조를 포함할 거예요.

  • Parameters: obj - 바인딩할 상태를 가져올, null이 아닌 객체
  • Returns: 바인딩할 객체와 속성을 담은, null이 아닌 DirStateFactory.Result. 어떤 상태 팩토리도 null이 아닌 답을 반환하지 않으면 결과는 원래 속성을 가진 객체(obj) 자체를 담을 거예요
  • Throws: NamingException - 팩토리를 사용하는 동안 네이밍 예외가 발생했을 때. 팩토리는 객체를 만들려고 다른 팩토리를 사용하고 싶지 않을 때만 예외를 던져야 해요. DirStateFactory.getStateToBind() 참조
  • Since: 1.3
  • See Also: DirStateFactory, DirStateFactory.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable, javax.naming.directory.Attributes), NamingManager.getStateToBind(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable)