JavaTM Platform
Standard Ed. 6

javax.naming.spi
인터페이스 ObjectFactory

기존의 서브 인터페이스의 일람:
DirObjectFactory


public interface ObjectFactory

이 인터페이스는, 객체를 생성하는 팩토리를 나타냅니다.

JNDI 시스템에서는,객체 팩토리를 사용해 객체 구현을 동적으로 로드할 수 있습니다. 예를 들어 이름 공간에 바인드 된 프린터를 검색하는 경우, 인쇄 서비스가 프린터명을 Reference 에 바인드 하면(자), 프린터 Reference 를 사용해 프린터 객체를 생성해, 룩 업의 호출측이 룩 업 후에 직접 프린터 객체로 조작할 수 있게 됩니다.

ObjectFactory 는 특정의 형태의 객체 생성을 실시합니다. 상기의 예에서는, Printer 객체의 생성에 PrinterObjectFactory 를 사용할 수 있습니다.

객체 팩토리는 ObjectFactory 인터페이스를 구현할 필요가 있습니다. 또 팩토리 클래스는 public 인 것이 필요해, 한편 파라미터를 잡히지 않는 public 생성자 을 가질 필요가 있습니다.

객체 팩토리의 getObjectInstance() 메소드는, 다른 파라미터를 사용해 여러 차례 불려 가는 일이 있습니다. 구현은 thread 세이프입니다.

이 클래스의 문서의 URL 의 기재는, RFC 1738 및 그 관련 RFC 로 정의되고 있는 URL 캐릭터 라인을 적용하고 있습니다. 문서의 URL 는 RFC 1738 등으로 진술되고 있는 구문에 따르는 캐릭터 라인이며, 반드시 java.net.URL 클래스 또는 Web 브라우저에 해당하는 지원가 있는 것은 아닙니다.

도입된 버젼:
1.3
관련 항목:
NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable) , NamingManager.getURLContext(java.lang.String, java.util.Hashtable) , ObjectFactoryBuilder , StateFactory

메소드의 개요
 Object getObjectInstance (Object  obj, Name  name, Context  nameCtx, Hashtable <?,?> environment)
          지정된 위치 정보 또는 참조 정보를 사용해, 객체를 생성합니다.
 

메소드의 상세

getObjectInstance

Object  getObjectInstance(Object  obj,
                         Name  name,
                         Context  nameCtx,
                         Hashtable <?,?> environment)
                         throws Exception 
지정된 위치 정보 또는 참조 정보를 사용해, 객체를 생성합니다.

이 객체의 특수 요건은,environment 를 사용해 지정됩니다. 이러한 환경 프로퍼티의 일례로서는, 사용자 식별 정보가 있습니다.

NamingManager.getObjectInstance() 는, 객체 팩토리에 연속적으로 로드해, 1 개(살)이 null 이외의 대답을 생성할 때까지 객체 팩토리상에서 이 메소드를 계속 호출합니다. 객체 팩토리가 예외를 throw 하면(자), 그 예외는 NamingManager.getObjectInstance() 의 호출 측에 인도해져 null 이외의 대답을 생성할 가능성이 있는 다른 팩토리의 검색은 행해지지 않습니다. 객체 팩토리는, 그것이 목적의 유일한 팩토리이며, 다른 객체 팩토리를 검색할 필요가 없는 것이 확실한 경우에 한정해, 예외를 throw 하도록(듯이) 합니다. 이 팩토리가 지정된 인수로 객체를 생성할 수 없는 경우는, null 를 돌려줍니다.

「URL 문맥 팩토리」는 특수한 ObjectFactory 로, URL 또는 URL 가 위치를 지정하는 객체를 해결하는 문맥을 생성합니다. URL 문맥 팩토리의 getObjectInstance() 메소드는, 이하의 규칙에 따릅니다.

  1. obj 가 null 의 경우, 이 팩토리에 관련한 schema의 URL 를 해결하는 문맥을 생성합니다. 그 문맥은 특정의 URL 와는 연결시킬 수 없습니다. 이 문맥은 이 팩토리의 schema ID 를 사용해 임의의 URL 를 처리할 수 있습니다. 예를 들어, LDAP URL 문맥 팩토리로 null 로 설정된 obj 를 가지는 getObjectInstance() 를 호출하면(자), ldap://ldap.wiz.com/o=wiz, c=us, ldap://ldap.umich.edu/o=umich, c=us 등의 LDAP URL 를 해결할 수 있는 문맥이 돌려주어집니다.
  2. obj 가 URL 캐릭터 라인인 경우, URL 에 의해 식별된 객체 (일반적으로은 문맥)를 생성합니다. 예를 들어, 그것이 LDAP URL 문맥 팩토리이다고 합니다. obj 가 ldap://ldap.wiz.com/o=wiz, c=us 의 경우, getObjectInstance()는, LDAP 서버 ldap.wiz.com 의 식별명에 의해 지정된 문맥을 돌려줍니다. 계속되어 이 문맥을 사용해, 그 문맥에 관련하는 LDAP 명 (cn=George 등)을 해결할 수 있습니다.
  3. obj 가 URL 캐릭터 라인의 배열인 경우, URL 는 그것들이 참조하는 문맥이라고 하는 점으로써 동등하다라고 가정합니다. URL 가 동등한가, 혹은 동등한 필요가 있는가 하는 검증은, 문맥 팩토리에 따라서 다릅니다. 배열의 URL 의 순서는 중요하지는 않습니다. getObjectInstance()가 돌려주는 객체는, 단일의 URL 의 경우와 같습니다. 이것은, URL 에 의해 지정된 객체입니다.
  4. obj 가 상기 이외의 형태인 경우,getObjectInstance() 의 동작은 문맥 팩토리 구현에 의해 결정됩니다.

name 파라미터 및 environment 파라미터는, 호출측이 소유합니다. 구현은 이러한 객체를 변경하지 않고, 그 객체에 대한 참조도 보관 유지합니다만, 복제 또는 카피에 대한 참조를 보관 유지하는 일이 있습니다.

이름 파라미터와 문맥 파라미터     name 파라미터 및 nameCtx 파라미터를 임의에 사용해, 생성중의 객체의 이름을 지정할 수 있습니다. name 는 객체의 이름으로, 문맥 nameCtx 에 관련합니다. 객체를 명명할 수 있는 문맥이 다수 있는 일도 있습니다만, 그 경우는 호출해 옆이 선택합니다. 대범한 지침으로서 사용 가능한 「가장 깊다」문맥을 선택하는 것을 추천합니다. nameCtx 가 null 의 경우,name 는 디폴트의 초기 문맥에 관련하고 있습니다. 이름을 지정하지 않는 경우는 name 파라미터가 null 가 되도록(듯이) 합니다. 팩토리가 nameCtx 를 사용하는 경우는, 그 사용을 병행 액세스와 동기화하도록(듯이) 합니다. 문맥 구현은 thread 세이프인 것이 보증되어 있지 않기 때문입니다.

파라미터:
obj - 객체의 생성에 사용할 수 있는 위치 정보 또는 참조 정보를 포함하는, null 의 가능성이 있는 객체
name - nameCtx 에 관련하는 이 객체의 이름 또는, 이름을 지정하지 않는 경우는 null
nameCtx - name 파라미터의 지정에 관련하는 문맥, 또는 name 가 디폴트의 초기 문맥에 관련하는 경우는 null
environment - null 의 가능성이 있는, 객체의 생성에 사용되는 환경
반환값:
생성된 객체. 객체를 생성할 수 없는 경우는 null
예외:
Exception - 객체의 생성중에 이 객체 팩토리가 예외를 검출해, 다른 객체 팩토리가 시행되지 않는 경우
관련 항목:
NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable) , NamingManager.getURLContext(java.lang.String, java.util.Hashtable)

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