Class Reference

Class Reference

public class Reference
extends Object
implements Cloneable, Serializable

네이밍/디렉터리 시스템 밖에서 찾은 객체에 대한 참조를 나타내는 클래스예요. Reference는 네이밍/디렉터리 시스템에 직접 바인딩되지 않는 객체들에 대한 주소 정보를 기록하는 방법을 제공해요. Reference는 정렬된 주소 목록과 참조되는 객체에 대한 클래스 정보로 구성돼요. 목록의 각 주소는 같은 개념적 객체에 대한 통신 엔드포인트를 식별해요. "통신 엔드포인트"는 객체에 어떻게 연락하는지를 나타내는 정보예요. 예를 들어 네트워크 주소, 로컬 머신의 메모리 위치, 같은 머신의 다른 프로세스 등일 수 있어요. 목록의 주소 순서는 참조를 해석하는 객체 팩토리에게 의미가 있을 수 있어요. 여러 주소는 복제(replication)나 객체가 하나 이상의 통신 메커니즘을 통해 인터페이스를 제공하는 것 같은 여러 이유로 생길 수 있어요. 주소는 0부터 시작해 인덱싱돼요.

Reference는 또한 이 Reference가 참조하는 객체의 인스턴스를 만드는 것을 돕는 정보를 담고 있어요. 그 객체의 클래스 이름과, 객체를 만드는 데 사용할 팩토리의 클래스 이름·위치를 담고 있어요. 클래스 팩토리 위치는 팩토리를 로드하는 데 사용되는 클래스 경로를 나타내는 공백으로 구분된 URL 목록이에요. 팩토리 클래스(또는 그것이 의존하는 어떤 클래스나 리소스)를 로드해야 할 때, 각 URL이 (순서대로) 그 클래스를 로드하려 시도하는 데 사용돼요. Reference 인스턴스는 여러 스레드의 동시 접근에 대해 동기화되지 않아요. 단일 Reference에 동시에 접근해야 하는 스레드들은 서로 동기화하고 필요한 잠금을 제공해야 해요.

className

protected String className

Reference가 참조하는 객체의 클래스의 완전히 한정된 이름을 담아요.

  • See Also: Class.getName()

addrs

protected Vector<RefAddr> addrs

Reference에 담긴 주소들을 담아요. 생성자에 의해 초기화돼요.

classFactory

protected String classFactory

Reference가 참조하는 객체의 인스턴스를 만들기 위한 팩토리 클래스의 이름을 담아요. null로 초기화돼요.

classFactoryLocation

protected String classFactoryLocation

팩토리 클래스의 위치를 담아요. null로 초기화돼요.

Reference

public Reference(String className)

클래스 이름이 'className'인 객체에 대한 새 참조를 생성해요. 클래스 팩토리와 클래스 팩토리 위치는 null로 설정돼요. 새로 만들어진 참조는 주소가 0개예요.

  • Parameters: className - 이 참조가 참조하는 객체의, null이 아닌 클래스 이름

Reference

public Reference(String className,
 RefAddr addr)

클래스 이름이 'className'이고 주소를 가진 객체에 대한 새 참조를 생성해요. 클래스 팩토리와 클래스 팩토리 위치는 null로 설정돼요.

  • Parameters: className - 이 참조가 참조하는 객체의, null이 아닌 클래스 이름

Reference

public Reference(String className,
 String factory,
 String factoryLocation)

클래스 이름이 'className'이고 객체의 팩토리 클래스 이름·위치를 가진 객체에 대한 새 참조를 생성해요.

  • Parameters: className - 이 참조가 참조하는 객체의, null이 아닌 클래스 이름
  • See Also: ObjectFactory, NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable)

Reference

public Reference(String className,
 RefAddr addr,
 String factory,
 String factoryLocation)

클래스 이름이 'className'이고 객체의 팩토리 클래스 이름·위치와 객체 주소를 가진 객체에 대한 새 참조를 생성해요.

  • Parameters: className - 이 참조가 참조하는 객체의, null이 아닌 클래스 이름
  • See Also: ObjectFactory, NamingManager.getObjectInstance(java.lang.Object, javax.naming.Name, javax.naming.Context, java.util.Hashtable)

getClassName

public String getClassName()

이 참조가 참조하는 객체의 클래스 이름을 가져와요.

  • Returns: 객체의, null이 아닌 완전히 한정된 클래스 이름 (예: "java.lang.String")

getFactoryClassName

public String getFactoryClassName()

이 참조가 참조하는 객체의 팩토리 클래스 이름을 가져와요.

  • Returns: 팩토리의, null일 수 있는 완전히 한정된 클래스 이름 (예: "java.lang.String")

getFactoryClassLocation

public String getFactoryClassLocation()

이 참조가 참조하는 객체의 팩토리 위치를 가져와요. 코드베이스(codebase)라면 팩토리 클래스 정의를 로드해야 하는 위치를 나열하는 공백으로 구분된 URL의 정렬된 목록이에요.

  • Returns: 팩토리 클래스 로딩 위치를 담은, null일 수 있는 문자열

get

public RefAddr get(String addrType)

주소 타입이 'addrType'인 첫 번째 주소를 가져와요. 주소 타입의 동등성을 검사하는 데 String.compareTo()가 사용돼요.

  • Parameters: addrType - 주소를 찾을, null이 아닌 주소 타입
  • Returns: 이 참조에서 주소 타입이 'addrType'인 주소; 그런 주소가 없으면 null

get

public RefAddr get(int posn)

인덱스 posn의 주소를 가져와요.

  • Parameters: posn - 가져올 주소의 인덱스
  • Returns: 0 기반 인덱스 posn의 주소. 범위는 [0, getAddressCount())여야 해요
  • Throws: ArrayIndexOutOfBoundsException - posn이 지정된 범위에 없을 때

getAll

public Enumeration<RefAddr> getAll()

이 참조의 주소들에 대한 열거(enumeration)를 가져와요. 이 참조에 주소가 추가·변경·제거되면 이 열거에 대한 그 효과는 정의되지 않아요.

  • Returns: 이 참조의 주소들(RefAddr)에 대한, null이 아닌 열거. 이 참조의 주소가 0개이면 요소가 0개인 열거가 반환돼요

size

public int size()

이 참조의 주소 수를 가져와요.

  • Returns: 이 참조의, 음이 아닌 주소 수

add

public void add(RefAddr addr)

주소 목록의 끝에 주소를 추가해요.

  • Parameters: addr - 추가할, null이 아닌 주소

add

public void add(int posn,
 RefAddr addr)

인덱스 posn에 주소 목록의 주소를 추가해요. 인덱스 posn 이상의 모든 주소는 목록에서 한 칸 위로(인덱스 0에서 멀어지는 방향) 이동해요.

  • Parameters: posn - addr을 삽입할 목록의 0 기반 인덱스
  • Throws: ArrayIndexOutOfBoundsException - posn이 지정된 범위에 없을 때

remove

public Object remove(int posn)

주소 목록에서 인덱스 posn의 주소를 삭제해요. posn보다 큰 인덱스의 모든 주소는 목록에서 한 칸 아래로(인덱스 0 쪽으로) 이동해요.

  • Parameters: posn - 삭제할 주소의 0 기반 인덱스
  • Returns: 제거된 주소
  • Throws: ArrayIndexOutOfBoundsException - posn이 지정된 범위에 없을 때

clear

public void clear()

이 참조에서 모든 주소를 삭제해요.

equals

public boolean equals(Object obj)

obj가 이 참조와 (같은 순서의) 같은 주소들을 가진 참조인지 결정해요. 주소들은 RefAddr.equals()를 사용해 검사돼요. 같은 주소들을 가질 뿐 아니라, Reference도 이 참조와 같은 클래스 이름을 가져야 해요. 클래스 팩토리와 클래스 팩토리 위치는 검사되지 않아요. obj가 null이거나 Reference의 인스턴스가 아니면 false를 반환해요.

  • Overrides: Object 클래스의 equals
  • Parameters: obj - 확인할, null일 수 있는 객체
  • Returns: obj가 이 참조와 동등하면 true, 그렇지 않으면 false
  • See Also: Object.hashCode(), HashMap

hashCode

public int hashCode()

이 참조의 해시 코드를 계산해요. 해시 코드는 그 주소들의 해시 코드의 합이에요.

  • Overrides: Object 클래스의 hashCode
  • Returns: int로서 이 참조의 해시 코드
  • See Also: Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

toString

public String toString()

이 참조의 문자열 표현을 생성해요. 문자열은 이 참조가 참조하는 클래스 이름과 각 주소의 문자열 표현으로 구성돼요. 이 표현은 표시용일 뿐 파싱용이 아니에요.

  • Overrides: Object 클래스의 toString
  • Returns: 이 참조의, null이 아닌 문자열 표현

clone

public Object clone()

이 참조의 클래스 이름·주소 목록·클래스 팩토리 이름·클래스 팩토리 위치를 사용해 이 참조의 복사본을 만들어요. 새로 만들어진 복사본의 변경은 이 Reference에 영향을 주지 않고 그 반대도 마찬가지예요.

  • Overrides: Object 클래스의 clone
  • Returns: 이 인스턴스의 클론
  • See Also: Cloneable