Interface DirObjectFactory

Interface DirObjectFactory

public interface DirObjectFactory
extends ObjectFactory

객체와 그 객체에 대한 속성(attributes)이 주어졌을 때 객체를 만드는 팩토리를 나타내는 인터페이스예요. JNDI 프레임워크는 객체 팩토리를 통해 객체 구현을 동적으로 로드할 수 있게 해 줘요. 자세한 내용은 ObjectFactory를 참조하세요. DirObjectFactorygetObjectInstance() 메서드에 Attributes 인스턴스를 공급할 수 있게 함으로써 ObjectFactory를 확장해요. DirObjectFactory 구현은 DirContext 서비스 공급자가 사용하도록 만들어졌어요. 서비스 공급자는 디렉터리에서 객체를 읽을 때, 그 객체를 팩토리가 처리해야 하는지 검사하는 데 유용한 속성을 이미 갖고 있을 수 있어요. 예를 들어 LDAP 스타일 서비스 공급자는 객체의 "objectclass"를 읽었을 수 있어요. CORBA 객체 팩토리는 "objectclass=corbaObject"인 LDAP 항목에만 관심이 있을 수 있어요. LDAP 서비스 공급자가 공급한 속성을 사용하면 CORBA 객체 팩토리는 신경 쓸 필요가 없는 객체를 빠르게 걸러낼 수 있고, 비-CORBA 객체 팩토리는 CORBA 관련 LDAP 항목을 빠르게 걸러낼 수 있어요.

getObjectInstance

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

지정된 위치/참조 정보와 속성을 사용해 객체를 만들어요. 이 객체의 특수 요구 사항은 environment를 사용해 제공돼요. 그런 환경 속성의 예로는 사용자 신원 정보가 있어요. DirectoryManager.getObjectInstance()는 객체 팩토리를 차례로 로드해요. DirObjectFactory를 만나면 DirObjectFactory.getObjectInstance()를 호출하고, 그렇지 않으면 ObjectFactory.getObjectInstance()를 호출해요. 팩토리가 null이 아닌 답을 만들어낼 때까지 이 작업을 반복해요. 객체 팩토리가 예외를 던지면 그 예외는 DirectoryManager.getObjectInstance()의 호출자에게 전달돼요. null이 아닌 답을 만들 수 있는 다른 팩토리를 찾는 작업은 중단돼요. 객체 팩토리는 자신이 유일한 의도된 팩토리이고 다른 객체 팩토리를 시도해서는 안 된다고 확신할 때만 예외를 던져야 해요. 이 팩토리가 제공된 인자로 객체를 만들 수 없으면 null을 반환해야 해요. DirObjectFactoryObjectFactory를 확장하므로 사실상 두 개의 getObjectInstance() 메서드를 가져요. 하나는 attributes 인자로 다른 것과 구분돼요. DirObjectFactory를 구현하는 팩토리가 주어지면 DirectoryManager.getObjectInstance()는 attributes 인자를 받는 메서드만 사용하고, NamingManager.getObjectInstance()는 attributes 인자를 받지 않는 메서드만 사용해요. URL 컨텍스트 팩토리와 DirObjectFactory에 동일하게 적용되는 객체 팩토리의 다른 속성에 대한 설명은 ObjectFactory를 참조하세요. name, attrs, environment 매개변수는 호출자가 소유해요. 구현은 이 객체들을 수정하거나 참조를 유지하지 않아요. 클론이나 복사본에 대한 참조를 유지할 수는 있어요.

  • Parameters: obj - 객체를 만드는 데 사용할 수 있는 위치/참조 정보를 담은, null일 수 있는 객체
  • Returns: 만들어진 객체; 객체를 만들 수 없으면 null
  • Throws: Exception - 이 객체 팩토리가 객체를 만들려는 동안 예외를 만났고, 시도할 다른 객체 팩토리가 없을 때
  • See Also: DirectoryManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable, javax.naming.directory.Attributes), NamingManager.getURLContext(java.lang.String, java.util.Hashtable)