Sun Java System Application Server Enterprise Edition 8.1 2005Q2 관리 설명서

6장 JNDI 자원

JNDI(Java Naming and Directory Interface) 정보

이 절에서는 JNDI(Java Naming and Directory Interface)에 대해 설명합니다. JNDI는 다른 종류의 이름 지정 및 디렉토리 서비스에 액세스하는 데 필요한 API(Application Programming Interface)입니다. J2EE 구성 요소는 JNDI 조회 메소드를 호출하여 객체를 찾습니다.

이 절에서는 다음 항목에 대해 설명합니다.

JNDI 이름 및 자원

JNDI는 Java Naming and Directory Interface API의 머리글자입니다. 응용 프로그램은 이 API를 호출하여 자원과 다른 프로그램 객체를 찾습니다. 자원은 데이터베이스 서버나 메시징 시스템 같은 시스템과의 연결을 제공하는 프로그램 객체입니다. JDBC 자원을 데이터 소스라고도 합니다. 모든 자원 객체는 고유하고 사용자에게 친숙한 이름으로 식별되며 JNDI라는 이름으로 부릅니다. 자원 객체와 해당 JNDI 이름은 Application Server에 포함된 이름 지정 및 디렉토리 서비스에 의해 함께 바인딩됩니다. 자원을 새로 만들려면 새로운 이름 객체 바인딩을 JNDI에 입력합니다.

J2EE 이름 지정 서비스

JNDI 이름은 사람들에게 친숙한 객체 이름입니다. 이러한 이름은 J2EE 서버에서 제공하는 이름 지정 및 디렉토리 서비스에 의해 객체에 바인딩됩니다. J2EE 구성 요소가 JNDI API를 통해 이 서비스에 액세스하기 때문에 대개 객체는 해당 JNDI 이름을 사용합니다. 예를 들어, Pointbase 데이터베이스의 JNDI 이름은 jdbc/Pointbase입니다. Application Server는 시작할 때 구성 파일로부터 정보를 읽어 JNDI 데이터베이스 이름을 이름 공간에 자동으로 추가합니다.

J2EE 응용 프로그램 클라이언트, Enterprise Bean 및 웹 구성 요소에는 JNDI 이름 지정 환경에 대한 액세스 권한이 필요합니다.

응용 프로그램 구성 요소의 이름 지정 환경은 배포나 어셈블 중에 응용 프로그램 구성 요소 비즈니스 논리의 사용자 정의를 허용하는 메커니즘입니다. 응용 프로그램 구성 요소 환경을 사용하면 응용 프로그램 구성 요소의 소스 코드에 액세스하거나 변경할 필요 없이 응용 프로그램 구성 요소를 사용자 정의할 수 있습니다.

J2EE 컨테이너는 응용 프로그램 구성 요소의 환경을 구현하며 이러한 환경을 응용 프로그램 구성 요소 인스턴스에 JNDI 이름 지정 컨텍스트로 제공합니다. 응용 프로그램 구성 요소의 환경은 다음과 같이 사용됩니다.

각 응용 프로그램 구성 요소는 고유 환경 항목 집합을 정의합니다. 같은 컨테이너 내의 모든 응용 프로그램 구성 요소 인스턴스는 같은 환경 항목을 공유합니다. 응용 프로그램 구성 요소 인스턴스는 런타임 시 환경을 수정할 수 없습니다.

이름 지정 참조 및 바인딩 정보

자원 참조는 자원에 대한 구성 요소의 코드화된 이름을 식별하는 배포 설명자의 요소입니다. 즉, 코드화된 이름은 자원의 연결 팩토리를 참조합니다. 다음 절의 해당 예에서 자원 참조 이름은 jdbc/SavingsAccountDB입니다.

자원의 JNDI 이름과 자원 참조의 이름은 같지 않습니다. 이 방법으로 이름을 지정하려면 배포 전에 두 이름을 매핑해야 하지만 자원으로부터 구성 요소를 분리하기도 합니다. 이러한 분리 기능으로 인해 나중에 구성 요소가 다른 자원에 액세스해야 할 경우 이름을 변경할 필요가 없습니다. 또한 이러한 융통성으로 인해 기존의 구성 요소로부터 J2EE 응용 프로그램을 어셈블하기가 쉽습니다.

다음 표에서는 Application Server에서 사용하는 J2EE 자원에 대한 JNDI 조회 및 관련 참조를 나열합니다.

표 6–1 JNDI 조회 및 관련 참조

JNDI 조회 이름 

관련 참조 

java:comp/env

응용 프로그램 환경 항목 

java:comp/env/jdbc

JDBC 데이터 소스 자원 관리자 연결 팩토리 

java:comp/env/ejb

EJB 참조 

java:comp/UserTransaction

UserTransaction 참조 

java:comp/env/mail

JavaMail 세션 연결 팩토리 

java:comp/env/url

URL 연결 팩토리 

java:comp/env/jms

JMS 연결 팩토리 및 대상 

java:comp/ORB

응용 프로그램 구성 요소 간에 공유되는 ORB 인스턴스 

사용자 정의 자원 정보

사용자 정의 자원 사용

사용자 정의 자원은 로컬 JNDI 저장소를 액세스하고 외부 자원은 외부 JNDI 저장소를 액세스합니다. 두 가지 유형의 자원 모두 사용자 지정 팩토리 클래스 요소, JNDI 이름 속성 등을 필요로 합니다. 이 절에서는 J2EE 자원에 대해 JNDI 연결 팩토리 자원을 구성하는 방법과 이러한 자원에 액세스하는 방법에 대해 설명합니다.

Application Server 내에서 list-jndi-entities 뿐만 아니라 자원을 작성, 삭제 및 나열할 수 있습니다.

Procedure사용자 정의 자원을 만드는 방법

  1. 관리 콘솔의 왼쪽 창에서 수정할 JNDI 구성의 Application Server 인스턴스를 엽니다.

  2. JNDI 탭을 열고 사용자 정의 자원을 누릅니다.

    사용자 정의 자원이 이미 만들어져 있으면 오른쪽 창에 나열됩니다. 새 사용자 정의 자원을 만들려면 새로 만들기를 누릅니다. JNDI 탭을 열고 새로 만들기를 누릅니다. 새로운 사용자 정의 자원을 추가하기 위한 페이지가 표시됩니다.

  3. JNDI 이름 필드에서 자원에 액세스할 때 사용할 이름을 입력합니다.

    이 이름은 JNDI 이름 지정 서비스에 등록됩니다.

  4. 위의 예에서와 같이 자원 유형 필드에 전체 유형 정의를 입력합니다.

    자원 유형 정의는 xxx.xxx 형식을 따릅니다.

  5. 팩토리 클래스 필드에서 작성할 사용자 정의 자원의 팩토리 클래스 이름을 입력합니다.

    팩토리 클래스는 팩토리 클래스에 대한 사용자 지정 이름입니다. 이 클래스는 javax.naming.spi.ObjectFactory 인터페이스를 구현합니다.

  6. 설명 필드에서 작성할 자원에 대한 설명을 입력합니다.

    이 설명은 문자열 값이고 최대 250자를 포함할 수 있습니다.

  7. 추가 등록 정보 섹션에서 등록 정보 이름과 값을 추가합니다.

  8. 사용자 정의 자원 사용 가능 확인란을 선택하여 사용자 정의 자원을 활성화합니다.

  9. 사용자 정의 자원을 저장하려면 확인을 누릅니다.

    클러스터나 독립 실행형 인스턴스에 사용자 정의 자원을 배포할 경우 대상 탭을 사용하여 대상을 관리할 수 있습니다. 사용자 정의 자원을 만든 후 탭이 표시됩니다. 대상 이름을 입력하고 확인을 눌러 대상을 설정합니다.

해당 asadmin 명령

create-custom-resource

Procedure사용자 정의 자원을 편집하는 방법

  1. 관리 콘솔의 왼쪽 창에서 수정할 JNDI 구성의 Application Server 인스턴스를 엽니다.

  2. JNDI를 열고 사용자 정의 자원을 선택합니다.

    사용자 정의 자원이 이미 만들어져 있으면 오른쪽 창에 나열됩니다.

  3. 오른쪽 창에서 파일 이름을 누릅니다.

  4. 자원 유형 필드, 팩토리 클래스 필드 또는 설명 필드를 편집합니다.

  5. 사용자 정의 자원 사용 가능 확인란을 선택하여 사용자 정의 자원을 활성화합니다.

  6. 저장을 눌러 사용자 정의 자원의 변경 내용을 저장합니다.

Procedure사용자 정의 자원을 삭제하는 방법

  1. 관리 콘솔의 왼쪽 창에서 JNDI 탭을 엽니다.

  2. 사용자 정의 자원을 누릅니다.

    사용자 정의 자원이 이미 만들어져 있으면 오른쪽 창에 나열됩니다.

  3. 삭제할 자원 이름 옆에 있는 상자를 누릅니다.

  4. 삭제를 누릅니다. 사용자 정의 자원이 삭제됩니다.

해당 asadmin 명령

delete-custom-resource

사용자 정의 자원 나열

사용자 정의 자원을 나열하려면 asadmin list-custom-resources 명령을 입력합니다. 예를 들어, 호스트 plum 의 사용자 정의 자원을 나열하려면 다음을 입력합니다.


$asadmin list-custom-resources --host plum target6

전체 컨텍스트를 보려면 asadmin help list-custom-resources를 입력합니다.

외부 JNDI 저장소 및 자원 정보

외부 JNDI 저장소 및 자원 사용

Application Server에서 실행 중인 응용 프로그램에서 외부 JNDI 저장소에 저장된 자원에 액세스해야 할 경우가 자주 있습니다. 예를 들어, LDAP 서버에 일반 Java 객체를 Java 스키마별로 저장할 수 있습니다. 외부 JNDI 자원 요소를 사용하면 이러한 외부 자원 저장소를 구성할 수 있습니다. 외부 JNDI 팩토리는 javax.naming.spi.InitialContextFactory 인터페이스를 구현해야 합니다.

다음은 외부 JNDI 자원 사용 예입니다.

<resources>
 <!-- external-jndi-resource element specifies how to access J2EE resources
 -- stored in an external JNDI repository. The following example
 -- illustrates how to access a java object stored in LDAP.
 -- factory-class element specifies the JNDI InitialContext factory that
 -- needs to be used to access the resource factory. property element
 -- corresponds to the environment applicable to the external JNDI context
 -- and jndi-lookup-name refers to the JNDI name to lookup to fetch the
 -- designated (in this case the java) object.
 -->
  <external-jndi-resource jndi-name="test/myBean"
      jndi-lookup-name="cn=myBean"
      res-type="test.myBean"
      factory-class="com.sun.jndi.ldap.LdapCtxFactory">
    <property name="PROVIDER-URL" value="ldap://ldapserver:389/o=myObjects" />
    <property name="SECURITY_AUTHENTICATION" value="simple" />
    <property name="SECURITY_PRINCIPAL", value="cn=joeSmith, o=Engineering" />
    <property name="SECURITY_CREDENTIALS" value="changeit" />
  </external-jndi-resource>
</resources>

Procedure외부 자원을 만드는 방법

  1. 관리 콘솔의 왼쪽 창에서 수정할 JNDI 구성의 Application Server 인스턴스를 엽니다.

  2. JNDI를 열고 외부 자원을 선택합니다.

    외부 자원이 이미 만들어져 있으면 오른쪽 창에 나열됩니다.

  3. 새 외부 자원을 만들려면 새로 만들기를 누릅니다.

  4. 자원에 액세스하는 데 사용할 이름을 JNDI 이름 필드에 입력합니다.

    이 이름이 JNDI 이름 지정 서비스에 등록됩니다.

  5. 위의 예에서와 같이 자원 유형 필드에 전체 유형 정의를 입력합니다.

    자원 유형 정의는 xxx.xxx 형식을 따릅니다.

  6. 외부 저장소에서 조회할 JNDI 값을 JNDI 조회 필드에 입력합니다.

    예를 들어, 외부 자원을 만들어 외부 저장소에 연결하고 Bean 클래스를 테스트할 경우 JNDI 조회는 다음과 같습니다. cn=testmybean

  7. com.sun.jndi.ldap와 같은 JNDI 팩토리 클래스 외부 저장소를 팩토리 클래스 필드에 입력합니다.

    이 클래스는 javax.naming.spi.ObjectFactory 인터페이스를 구현합니다.

  8. 설명 필드에서 작성할 자원에 대한 설명을 입력합니다.

    이 설명은 문자열 값이고 최대 250자를 포함할 수 있습니다.

  9. 추가 등록 정보 섹션에서 등록 정보 이름과 값을 추가합니다.

  10. 외부 자원을 활성화하려면 외부 자원 사용 확인란을 선택합니다.

  11. 확인을 눌러 외부 자원을 저장합니다.

    클러스터나 독립 실행형 인스턴스에 외부 자원을 배포한 경우 대상 탭을 사용하여 대상을 관리할 수 있습니다. 외부 자원을 만든 후 탭이 표시됩니다. 대상 이름을 입력하고 확인을 눌러 대상을 설정합니다.

해당 asadmin 명령

create-jndi-resource

Procedure외부 자원을 편집하는 방법

  1. 관리 콘솔의 왼쪽 창에서 수정할 JNDI 구성의 Application Server 인스턴스를 엽니다.

  2. JNDI를 열고 외부 자원을 선택합니다.

    외부 자원이 이미 만들어져 있으면 오른쪽 창에 나열됩니다.

  3. 외부 자원을 편집하려면 오른쪽 창에서 파일 이름을 누릅니다.

  4. 자원 유형 필드, 조회 필드, 팩토리 클래스 필드 또는 설명 필드를 편집합니다.

  5. 외부 자원을 활성화하려면 외부 자원 사용 확인란을 선택합니다.

  6. 저장을 눌러 외부 자원의 변경 내용을 저장합니다.

Procedure외부 자원을 삭제하는 방법

  1. 관리 콘솔의 왼쪽 창에서 JNDI 탭을 엽니다.

  2. 외부 자원을 누릅니다.

    외부 자원이 이미 만들어져 있으면 오른쪽 창에 나열됩니다.

  3. 삭제할 자원 이름 옆에 있는 상자를 누릅니다.

  4. 삭제를 누릅니다. 외부 자원이 삭제됩니다.

해당 asadmin 명령

delete-jndi-resource

외부 자원 나열

외부 자원을 나열하려면 asadmin list-jndi-resources 명령을 입력하고 JNDI 이름을 지정합니다. 예를 들어 외부 자원을 나열하려면 다음을 입력합니다.

$asadmin list-jndi-resources --user adminuser --host plum jndi_name_test

전체 컨텍스트를 보려면 asadmin help list-jndi-resources를 입력합니다.