자원 참조 이점
WebSphere® Application Server의 경우 코드가 JNDI(Java™ Naming and Directory Interface) 네임스페이스에서 직접 자원에 액세스하기 보다는 논리 이름을 통해 애플리케이션 서버 자원(예: 데이터 소스 또는 J2C 연결 팩토리)을 참조해야 합니다. 이러한 논리 이름을 자원 참조라고 합니다.
애플리케이션 서버는 다음과 같은 이유로 자원 참조를 사용해야 합니다.
- 애플리케이션 코드가 JNDI 네임스페이스에서 직접 데이터 소스를 검색하는 경우, 데이터 소스로 유지보수되는 모든 연결은 애플리케이션에 정의된 특성을 상속합니다. 따라서 데이터 소스가 다중 애플리케이션에서 공유 연결을 유지보수하도록 구성하는 경우 다양한 예외가 발생할 수 있습니다. 예를 들어, 다른 연결 구성이 필요한 애플리케이션은 특정 데이터 소스 연결을 시도하여 애플리케이션 실패가 발생할 수 있습니다.
- 이를 통해 프로그래머는 대상 애플리케이션 서버에서 실제 데이터 소스 또는 연결 팩토리의 이름을 알 필요가 없습니다.
- 자원 참조를 통해 데이터 소스에 대한 기본 격리 레벨을 설정할 수 있습니다. 자원 참조를 사용하지 않고 사용하는 JDBC 드라이버에 대해 기본값을 가져옵니다.
자원 참조 사용에 대한 다음 예는
검색 메소드를 통해 이에 대한 플레이스홀더를 작성하여 데이터 소스를 호출합니다.
논리 이름 jdbc/Section을 사용하여 코드는
JNDI 서브컨텍스트 java:comp/env/에 플레이스홀더를 저장하고 jdbc/Section은
자원 참조가 됩니다. (서브컨텍스트 java:comp/env/는
WebSphere Application Server가 애플리케이션 코드 내에서 오브젝트 참조에 대해 독점적으로
제공하는 네임스페이스입니다.)
javax.sql.DataSource specificDataSource =
(javax.sql.DataSource) (new InitialContext()).lookup("java:comp/env/jdbc/Section");
//The method InitialContext()).lookup creates the logical name, or resource reference, jdbc/Section.
일반적으로 실제 데이터 소스는 나중에 관리 태스크로 구성됩니다. 논리 이름 jdbc/Section은 애플리케이션 배치 디스크립터에서 자원 참조로
공식적으로 선언됩니다. 그러면 자원 참조를 여러가지 방식으로 실제
데이터 소스의 JNDI 이름과 연관시킬 수 있습니다.
- 애플리케이션 어셈블리 시점에서 데이터 소스 JNDI 이름을 아는 경우, 자원 참조 바인딩 페이지에 이름을 지정하십시오.
- 애플리케이션 배치 중에 데이터 소스 JNDI 이름을 지정하십시오.
- 배치 후에 애플리케이션을 구성할 때 자원 참조를 데이터 소스 JNDI 이름에 맵핑하십시오.
모든 유형의 필수 자원 바인딩에 대한 정보는 애플리케이션 바인딩 기사를 참조하십시오.