| Sun ONE Web Server 6.1 관리자 설명서 |
12 장
이름 지정 구성과 리소스구성요소 기반 Java� 2 Platform, Enterprise Edition(J2EE�) 기술은 엔터프라이즈 개발 및 구현을 단순화하는 웹 서비스용 인프라를 제공합니다.
이 장에서는 Sun ONE Web Server에서 제공되는 J2EE 리소스에 대하여 설명하고 이들 리소스를 만들고 관리하는 방법에 대하여 살펴봅니다.
Java 보안 및 영역 기반 인증에 대한 설명은 제 4장, "웹 컨테이너 및 웹 응용 프로그램용 J2EE 기반 보안"을 참조하십시오.
이 장에서는 다음 항목에 대해 설명합니다.
Java 사용 설정 및 해제Java는 전역적, 즉 Sun ONE Web Server 인스턴스마다 사용 설정하거나 특정 가상 서버 클래스마다 사용 설정할 수 있습니다. 기본적으로 Java는 Sun ONE Web Server에서 사용 설정되며 다음 줄이 magnus.conf 파일에 추가됩니다.
Init fn=”load-modules” shlib=”<server-root>/bin/https/lib/libj2eeplugin.so”
또한 특정 가상 서버용으로 Java를 사용할 수 있습니다. Java를 설정하면 서버가 해당 가상 서버 클래스용 obj.conf 파일을 필요한 J2EE 지시문을 포함하여 업데이트합니다.
obj.conf 및 magnus.conf 파일에 대한 자세한 내용은 Sun ONE Web Server 6.1 Administrator's Configuration File Reference와 Sun One Web Server 6.1 NSAPI Programmer's Guide를 참조하십시오.
예를 들어 전체 서버 또는 특정 가상 서버 클래스가 오직 정적 컨텐츠만 제공하는 등의 일부 경우 Java를 전역적으로 또는 해당 클래스에 대하여 사용하지 않도록 하는 것이 좋을 때가 있습니다.
Java 사용을 설정 또는 해제하려면 다음과 같이 합니다.
JVM 설정 구성Sun ONE Web Server 6.1은 이전 버전과 달리 더 이상 독립형 JRE(Java Runtime Environment)를 지원하지 않습니다. 대신 서버를 사용하려면 JDK 1.4.1 이상이 필요합니다. 서버를 설치할 때 기본 JDK 옵션을 선택하면 JDK(Java Development Kit) 버전 1.4.1_03이 <server-root>/bin/https/jdk 디렉토리에 설치됩니다.
서버 인스턴스용 JVM(Java Virtual Machine) 설정을 구성할 수 있습니다. 이 설정에는 Java 홈의 위치, 컴파일러 옵션, 디버깅 옵션 및 프로파일러 정보 등이 포함됩니다. 이 설정을 구성하는 이유 중 하나는 성능을 향상시키기 위한 것입니다. 성능에 대한 자세한 내용은 Sun ONE Web Server 6.1 Performance Tuning, Sizing, and Scaling Guide를 참조하십시오.
일반 설정 구성
JDK의 위치를 변경하고 디버깅 옵션을 지정하려면 다음과 같이 합니다.
- Server Manager에 액세스하고 Java 탭을 선택합니다.
- JVM General을 누릅니다.
JVM General 인터페이스
- Java Home을 설정합니다.
Java Home은 JDK(Java Developer's Kit)가 설치된 위치의 경로입니다. Sun ONE Web Server는 Sun JDK 1.4.1_03을 지원합니다.
- 디버깅을 사용할 것인지의 여부와 디버깅 옵션을 선택합니다.
디버깅 옵션 목록은 다음에서 사용할 수 있습니다. http://java.sun.com/products/jpda/doc/conninv.html#Invocation
- OK를 누릅니다.
경로 설정 구성
어떤 이유로 인하여 JVM 경로 설정을 구성해야 하는 경우가 있습니다. 예를 들어 XML Parser 클래스 등의 시스템 클래스를 대체하기 위하여 시스템의 classpath용 접미사를 선택하거나 프로덕션 환경에서의 환경 변수 부작용을 방지하기 위하여 환경 classpath를 무시할 수 있습니다.
Administration 인터페이스에서 JVM의 경로 설정을 구성하려면 다음과 같이 합니다.
- Server Manager에 액세스하고 Java 탭을 선택합니다.
- JVM Path Settings를 누릅니다.
- 시스템의 classpath에 대한 접미사를 선택합니다.
- 환경 클래스 경로를 무시할지 여부를 선택합니다.
classpath를 무시하지 않으면 CLASSPATH 환경 변수가 읽혀서 Sun ONE Web Server classpath에 추가됩니다. CLASSPATH 환경 변수는 classpathsuffix 뒤인 제일 끝에 추가됩니다.
개발 환경을 위해서는 클래스 경로를 사용해야 합니다. 생성 환경을 위해서는 환경 변수 부작용을 방지하기 위해 이 클래스 경로를 무시해야 합니다.
- 원시 라이브러리 경로 접두사 및 접미사를 설정합니다.
원시 라이브러리 경로는 원시 공유 라이브러리에 대한 Web Server 설치 상대 경로, 표준 JRE 원시 라이브러리 경로, 셸 환경 설정(UNIX의 경우 LD_LIBRARY_PATH) 및 profiler 요소에 지정된 모든 경로의 자동 구성된 연쇄입니다. 이것이 합성되면 서버 구성에 명시적으로 나타나지 않습니다.
- OK를 누릅니다.
JVM 옵션 구성
Administration 인터페이스에서 JVM 명령줄 옵션을 설정하려면 다음과 같이 합니다.
- Server Manager에 액세스하고 Java 탭을 선택합니다.
- JVM Options를 누르고 필요한 사항을 변경합니다.
특정 JVM 옵션에 대한 내용은 다음을 참조하십시오.
http://java.sun.com/docs/hotspot/VMOptions.html
- OK를 누릅니다.
JVM 프로파일러 구성
프로파일러를 사용하여 Sun ONE Web Server에서 원격 프로파일링을 수행하면 서버측 성능의 병목 현상을 찾을 수 있습니다.
Administration 인터페이스에서 JVM Profiler를 구성하려면 다음과 같이 합니다.
프로파일러에 대한 자세한 내용은 Sun ONE Web Server 6.1 Programmer's Guide를 참조하십시오.
J2EE 이름 지정 서비스 및 리소스 설명웹 응용 프로그램은 리소스 관리자, 데이터 소스(SQL 데이터소스 등), 전자우편 세션 및 URL 연결 팩토리 등 다양한 리소스에 액세스할 수 있습니다. J2EE 플랫폼은 JNDI(Java Naming and Directory Interface) 서비스를 통하여 응용 프로그램이 이러한 리소스를 사용할 수 있도록 합니다.
Sun ONE Web Server에서는 다음의 J2EE 리소스를 만들고 관리할 수 있습니다.
JDBC 데이터소스
JDBC Datasource는 sun ONE Web Server를 이용하여 만들고 관리할 수 있는 J2EE 리소스입니다.
JDBC API는 관련 데이터베이스 시스템과의 연결을 위한 API입니다. JDBC API는 두 부분으로 이루어집니다.
JDBC Datasource 개체는 Java 프로그래밍 언어에서 데이터 소스를 구현하는 것입니다. 간단히 말하면 데이터 소스는 데이터를 저장하기 쉽게 하는 것입니다. 이는 대규모 기업용의 복잡한 데이터베이스처럼 고차원적인 것일 수 있으며 행과 열로 이루어진 파일과 같이 간단한 것일 수도 있습니다. JDBC Datasource는 Sun ONE Web Server를 통하여 만들고 관리할 수 있는 J2EE 리소스입니다.
JDBC API는 일련의 Java용 클래스를 제공하며, 여기에는 다양한 관계형 데이터베이스에 대한 액세스가 동일하도록 하는 표준 SQL 데이터베이스 액세스 인터페이스가 포함됩니다.
JDBC를 사용하면 SQL문을 거의 모든 데이터베이스 관리 시스템(DBMS)으로 보낼 수 있습니다. 또한 관계형 및 개체형 DBMS 모두에 대한 인터페이스로 사용됩니다.
사용자 정의 리소스를 만드는 방법은 JDBC 리소스 생성을 참조하십시오.
JDBC 연결 풀
JDBC 연결 풀은 데이터베이스에 연결되는 JDBC 그룹의 이름입니다. 이 연결은 Sun ONE Web Server를 시작할 때 풀에서 연결에 대한 요청을 처음 수행하면 만들어집니다.
JDBC 연결 풀은 연결 풀을 만드는 데 사용하는 등록 정보를 정의합니다. 각 연결 풀은 JDBC 드라이버를 사용하여 서버가 시작할 때 실제 데이터베이스로의 연결을 설정합니다.
JDBC 기반 응용 프로그램이나 리소스는 풀에서 연결을 가져와 사용하며, 연결이 더 이상 필요하지 않으면 연결을 종료하고 연결 풀로 되돌립니다. 둘 이상의 JDBC 리소스가 동일한 풀 정의를 가리키는 경우에는 런타임에서 연결의 동일한 풀을 사용하게 됩니다.
새 JDBC 연결 풀을 만드는 방법은 새 JDBC 연결 풀 생성을 참조하십시오.
Java 전자우편 세션
JMS 대상(destination)은 Sun ONE Web Server를 통하여 만들고 관리할 수 있는 J2EE 리소스입니다.
많은 인터넷 응용 프로그램에는 전자우편 통지를 보낼 수 있는 기능이 필요하므로 J2EE 플랫폼에 JavaMail API와 응용 프로그램 구성요소가 인터넷 전자우편을 보낼 수 있는 JavaMail 서비스 제공자가 함께 포함되어 있습니다. JavaMail API는 두 부분으로 이루어집니다.
Java Mail Session은 Sun ONE Web Server를 통하여 만들고 관리할 수 있는 J2EE 리소스입니다.
참고
Sun ONE Web Server에는 Java Mail Sessions를 만들 수 있는 Administration Server 인터페이스가 없습니다. 이 작업을 하려면 명령줄 인터페이스를 사용합니다. 명령줄 유틸리티를 사용하여 전자우편 리소스를 만드는 방법은 전자우편 리소스 생성을 참조하십시오.
사용자 정의 리소스
사용자 정의 리소스는 로컬 JNDI 저장소에 액세스합니다. 사용자 정의 서버 전체 리소스 개체 팩토리를 지정하는 방법은 server.xml에 정의된 customresource 요소에 제공됩니다. 이러한 개체 팩토리는 javax.naming.spi.ObjectFactory 인터페이스를 구현합니다. 이 요소는 JNDI 이름(기타 Sun ONE Web Server 리소스 등의 jndiname 하위 요소)이 서버 전체 이름 공간, 해당 유형, 리소스 팩토리 클래스의 이름 및 이를 인스턴스화하는 표준 등록 정보 세트에서 사용되도록 연결합니다.
리소스 참조의 환경 참조가 server.xml의 customresource 및 externaljndiresource 태그를 사용하여 정의한 서버 전체 리소스 구성에 연결되어야 합니다. 응용 프로그램 구성요소의 동적 재구현이 JNDI 이름 지정 환경의 경우 문제가 됩니다. Sun ONE Web Server는 모든 응용 프로그램 특정 참조를 해제하고 모든 새 참조를 새로 설치된 응용 프로그램의 이름 지정 컨텍스트로 다시 바인드합니다.
사용자 정의 리소스를 만드는 방법은 사용자 정의 리소스 생성을 참조하십시오.
외부 JNDI 리소스
Sun ONE Web Server에서 실행되는 응용 프로그램이 외부 JNDI 저장소에 저장된 리소스에 액세스해야 하는 경우가 있습니다. 예를 들어 일반 Java 개체는 Java 스키마에 따라 LDAP 서버에 저장될 수 있습니다. 사용자 정의 리소스를 사용하면 로컬 JNDI 저장소에 액세스할 수 있으나, 외부 JNDI 저장소에 액세스하려면 반드시 외부 JNDI 리소스를 사용해야 합니다. 외부 JNDI 팩토리는 반드시 javax.naming.spi.InitialContextFactory를 구현해야 합니다.
외부 JNDI 리소스를 만드는 방법은 외부 JNDI 리소스 생성을 참조하십시오.
JNDI(Java Naming and Directory Interface) 설명여기에서는 서로 다른 이름 지정 및 디렉토리 서비스에 액세스하는 데 사용하는 응용 프로그램 프로그래밍 인터페이스(API)인 JNDI(Java Naming and Directory Interface)에 대하여 설명합니다. J2EE 구성요소는 JNDI 조회 메소드를 시작하여 개체의 위치를 찾습니다.
여기에서는 다음 항목에 대해 설명합니다.
J2EE 이름 지정 서비스
JNDI 이름은 사용자에게 익숙한 개체 이름입니다. 이 이름은 J2EE 서버가 제공하는 이름 지정 및 디렉토리 서비스에 의하여 해당 개체와 바인드됩니다. J2EE 구성요소는 JNDI API를 통하여 이 서비스에 액세스하므로 사용자는 보통 JNDI 이름으로 사용자에게 익숙한 개체 이름을 참조합니다. 예를 들어 Oracle 데이터베이스의 JNDI 이름은 jdbc/Oracle로 지정할 수 있습니다. 이 데이터베이스가 시작되면 Sun ONE Web Server는 구성 파일에서 해당 정보를 읽고 JNDI 데이터베이스 이름을 자동으로 이름 공간에 추가합니다.
응용 프로그램 구성요소의 이름 지정 환경은 구현 및 어셈블리 과정에서 응용 프로그램 구성요소의 비즈니스 로직을 사용자 정의 할 수 있는 메커니즘입니다. 응용 프로그램 구성요소의 환경을 사용하면 응용 프로그램 구성요소의 소스 코드에 액세스하거나 이를 변경하지 않고 응용 프로그램 구성요소를 사용자 정의할 수 있습니다.
J2EE 컨테이너는 Web 응용 프로그램 구성요소의 환경을 구현하고 이를 JNDI 이름 지정 컨텍스트로 응용 프로그램 구성요소 인터페이스에 제공합니다. 응용 프로그램 구성요소의 환경은 다음과 같이 사용됩니다.
- Web 응용 프로그램 구성요소의 비즈니스 메소드는 JNDI 인터페이스를 사용하여 환경에 액세스합니다. 응용 프로그램 구성요소 제공자는 응용 프로그램 구성요소가 런타임에 해당 환경에서 제공될 것으로 기대하는 모든 환경 요소를 구현 기술자에 선언합니다.
- 컨테이너는 응용 프로그램 구성요소 환경을 저장하는 JNDI 이름 지정 컨텍스트를 구현한 것입니다. 컨테이너는 또한 구현자가 각 응용 프로그램 구성요소의 환경을 만들고 관리할 수 있는 도구를 제공합니다.
- 구현자는 컨테이너가 제공하는 도구를 사용하여 응용 프로그램 구성요소의 구현 기술자에 선언된 환경 항목을 초기화합니다. 구현자는 환경 항목의 값을 설정 및 수정할 수 있습니다.
- 컨테이너는 런타임에서 응용 프로그램 구성요소 인스턴스가 사용할 수 있는 환경 이름 지정 컨텍스트를 만듭니다. 응용 프로그램 구성요소의 인스턴스는 JNDI 인터페이스를 사용하여 환경 항목의 값을 구합니다.
각 응용 프로그램 구성요소는 자체의 환경 항목 세트를 정의합니다. 동일한 컨테이너에 있는 응용 프로그램 구성요소의 모든 인스턴스는 동일한 환경 항목을 공유합니다. 응용 프로그램 구성요소 인스턴스는 런타임에 환경을 수정할 수 없습니다.
이름 지정 참조 및 바인드 정보
리소스 참조는 구현 기술자에 있는 요소로 구성요소의 리소스용으로 코드화된 이름을 구분합니다. 더 정확히 말하면 해당 리소스를 위한 코드화된 이름 참조 연결 팩토리입니다. 다음 부분에서 제공된 예제에서 리소스 참조 이름은 jdbc/SavingsAccountDB입니다.
리소스의 JNDI 이름과 리소스 참조의 이름은 동일하지 않습니다. 이러한 이름 지정 방법을 사용하려면 구현 전에 이름 두 개를 매핑해야 하며, 또한 리소스에서 구성 요소를 분리해야 합니다. 이 분리로 인하여 이후에 구성요소가 다른 리소스에 액세스해야 하는 경우 코드 내의 이름을 변경할 필요는 없습니다. 이러한 유연성으로 인하여 미리 존재하는 구성요소에서 쉽게 J2EE 응용 프로그램을 어샘블할 수 있습니다.
Sun ONE Web Server가 사용하는 J2EE 리소스에 대한 권장 JNDI 조회와 해당 연결 참조는 다음 표와 같습니다.
표 1) JNDI 조회 및 해당 연결 참조
JNDI 조회 이름.
연결된 참조
java:comp/env
응용 프로그램 환경 항목
java:comp/env/jdbc
JDBC DataSource 리소스
java:comp/env/mail
JavaMail 세션 연결 팩토리
java:comp/env/url
URL 연결 팩토리
J2EE 표준 구현 기술자 내의 이름 지정 참조
이름 지정 참조는 응용 프로그램이 지정된 이름 지정 컨텍스트에서 개체를 조회할 때 사용하는 문자열입니다. 각 Web 응용 프로그램에는 이름 지정 컨텍스트가 있으며 참조는 표준 구성요소 구현 기술자 내에 구성됩니다. 여기에서는 Sun ONE Web Server에서 사용되는 표준 구현 기술자 기능에 대하여 설명합니다. 여기에서는 다음 항목에 대해 설명합니다.
응용 프로그램 환경 항목
환경 항목은 <env-entry>를 사용하여 정의하며 J2EE Web 응용 프로그램에 구현 시간 매개 변수를 지정하는 방법을 제공합니다. 참고로 서브릿 컨텍스트 초기화 매개 변수는 <context-param>을 사용하여 정의할 수 있으나, <env-entry>는 응용 프로그램 구현자가 이름, 유형 및 값을 구체적으로 지정하여 응용 프로그램 매게 변수를 구성할 수 있으므로 더 많이 사용됩니다.
J2EE 표준 개발 기술자에 지정된 <env-entry>의 구문은 다음 예제에 보이는 것과 같습니다.
<env-entry>
<description> Send pincode by mail </description>
<env-entry-name> mailPincode </env-entry-name>
<env-entry-value> false </env-entry-value>
<env-entry-type> java.lang.Boolean </env-entry-type>
</env-entry>
<env-entry-type> 태그는 해당 엔트리용의 유효한 클래스 이름을 지정합니다. 서브릿 또는 JSP에서 JNDI를 사용하여 <env-entry>를 조회하는 코드는 다음과 같습니다.
Context initContext = new InitialContext();
Boolean mailPincode = (Boolean)
initContext.lookup("java:comp/env/mailPincode");
// one could use relative names into the sub-context
Context envContext = initContext.lookup("java:comp/env");
Boolean mailPincode = (Boolean)
envContext.lookup("mailPincode");
리소스 참조
팩토리는 필요할 때 다른 개체를 만드는 개체입니다. 리소스 팩토리는 데이터베이스 연결이나 메시지 서비스 연결 등의 리소스 개체를 만듭니다. 이들 개체는 표준 구현 기술자에 있는 <resource-ref> 를 사용하여 구성합니다.
팩토리의 사용 예는 다음과 같습니다.
예
javax.sql.DataSource 유형의 개체를 만드는 JDBC 연결 팩토리로의 참조 선언:
<resource-ref>
<description> Primary database </description>
<res-ref-name> jdbc/primaryDB </res-ref-name>
<res-type> javax.sql.DataSource </res-type>
<res-auth> Container </res-auth>
</resource-ref>
<res-type> 은 해당 리소스 팩토리의 유효한 클래스 이름입니다. <res-auth> 변수는 Container 또는 Application에 값으로 지정될 수 있습니다.
Container가 지정되는 경우 웹 컨테이너가 리소스 팩토리를 JNDI 조회 레지스트에 바인드하기 전에 인증을 처리합니다. Application이 지정되는 경우 서브릿은 반드시 인증을 프로그램적으로 처리해야 합니다. 서로 다른 리소스 팩토리가 다음과 같이 리소스 유형을 기술하는 별도의 하위 컨텍스트에서 조회됩니다.
인증을 처리하는 컨테이너가 있는 응용 프로그램 구성요소에서 JDBC 연결을 가져오는 코드는 다음과 같습니다.
InitialContext initContext = new InitialContext();
DataSource source =
(DataSource) initContext.lookup("java:comp/env/jdbc/primaryDB");
Connection conn = source.getConnection();
참고로, 이들 리소스 참조가 작동하려면 런타임에 res-ref-name이 반드시 유효한 리소스 팩토리로 매핑되어야 합니다.
리소스 환경 참조
리소스 환경 참조는 JNDI 조회를 통하여 리소스에 연결되어 관리된 개체에 액세스할 수 있는 방법을 제공합니다. 표준 구현 기술자에 정의된 <resource-env-ref>는 응용 프로그램이 리소스 요구 사항을 선언하도록 합니다.
<resource-env-ref>와 <resource-ref> 요소의 가장 큰 차이점은 특정 리소스 인증 요구 사항이 없다는 점으로 이들 요소는 리소스 팩토리 기술자의 보조가 필요합니다.
예
<resource-env-ref>
<description> My Topic </description>
<res-env-ref-name> jdbc/MyTopic </res-ref-name>
<res-env-ref-type> javax.jdbc.Topic </res-type>
</resource-env-ref>
JMS Topic 개체에 액세스하는 코드는 다음과 같습니다.
InitialContext initContext = new InitialContext();
javax.jms.Topic myTopic = (javax.jdbc.Topic) initContext.lookup("java:comp/env/jdbc/MyTopic");
초기 이름 지정 컨텍스트
Sun ONE Web Server에서의 이름 지정 지원은 주로 J2EE 1.3을 기반으로 몇 가지 기능이 추가되었습니다. 응용 프로그램 구성요소가 InitialContext를 통하여 초기 컨텍스트를 만들면, Sun ONE Web Server는 Web 응용 프로그램의 이름 지정 환경에 대한 핸들 역할을 하는 개체를 반환합니다. 이 개체는 다시 java:comp/env 이름 공간용 하위 컨텍스트를 제공합니다. 각 Web 응용 프로그램은 자체의 이름 공간이 있습니다. 즉, java:comp/env 이름 공간은 각 Web 응용 프로그램마다 있으며 하나의 Web 응용 프로그램 이름 공간에 바인드된 개체는 다른 Web 응용 프로그램에 바인드된 개체와 충돌하지 않습니다.
JNDI 연결 팩토리
J2EE 웹 응용 프로그램의 경우 web.xml 파일에 있는 구현 기술자는 참조를 응용 프로그램 환경 엔트리 또는 리소스 관리자(SQL Data Source 등) 연결 팩토리로 정의하는 용도의 자리 표시자입니다. 응용 프로그램은 J2EE 컨테이너에서 제공되는 JNDI InitialNamingContext를 사용하여 이러한 참조를 조회합니다. 이렇게 하면 간단히 구현 기술자를 변경하여, 즉 응용 프로그램의 소스 코드를 액세스하거나 변경하지 않고 해당 응용 프로그램을 다른 Web Server 환경으로 이식할 수 있습니다.
연결 팩토리는 연결 개체를 만드는 개체로, J2EE 구성요소가 리소스에 액세스할 수 있도록 합니다. 데이터베이스용 연결 팩토리는 javax.sql.DataSource object로 이는 java.sql.Connection 개체를 만듭니다.
Sun ONE Web Server에서는 다음 리소스 및 리소스 팩토리에 액세스할 수 있는 수단을 구성할 수 있습니다.
모든 Sun ONE Web Server 리소스 팩토리는 server.xml의 <resource></resources> 태그 내에 지정되며 jndiname 속성을 사용하여 지정(한 JNDI 이름을 가집니다(jndiname이 없는 jdbconnectionpool은 제외). 이 속성은 서버 전체의 이름 공간에서 팩토리를 등록하는 데 사용합니다. 구현자는 sun-web.xml의 resource-ref를 사용하여 사용자 정의 응용 프로그램 특정 리소스 참조 이름(resource-ref 또는 resource-env-ref 요소에 선언)을 이들 서버 전체의 리소스 팩토리로 매핑할 수 있습니다. 이렇게 하면 주어진 응용 프로그램에 사용할 JDBC 리소스(또한 기타 리소스 팩토리)에 관련된 구현 시간을 결정할 수 있습니다.
사용자 정의 리소스는 로컬 JNDI 저장소로 액세스하며 외부 리소스는 외부 JNDI 저장소로 액세스합니다. 이 두 유형의 리소스 모두에는 사용자 지정 팩토리 클래스 요소, JNDI 이름 속성 등등이 필요합니다.
여기에서는 다양한 J2EE 리소스를 만드는 방법과 해당 리소스에 액세스하는 방법에 대하여 설명합니다.
Java 기반 리소스 생성여기에서는 Administration 인터페이스를 사용하여 다양한 J2EE 기반 리소스를 만드는 방법에 대하여 설명합니다.
새 JDBC 연결 풀 생성
다음과 같이 새 JDBC 연결 풀을 만들 수 있습니다.
Administration 인터페이스 사용
Administration 인터페이스를 사용하여 새 JDBC 연결 풀을 만들려면 다음과 같이 합니다.
- Server Manager에 액세스하고 Java 탭을 선택합니다.
- JDBC Connection Pools를 누릅니다.
- New를 누릅니다.
JDBC Connection Pools Interface 페이지
- Database Vendor 드롭 다운 목록에서 연결하려는 데이터베이스의 유형을 선택합니다. 목록에 사용하는 DBMS가 없는 경우 Other를 선택합니다.
New JDBC Connection Pools Interface 페이지
- Next를 누릅니다.
Add New JDBC Connection Pool 페이지가 표시됩니다.
- 새 연결 풀의 등록 정보를 지정하고 확인을 누릅니다.
아래의 목록은 반드시 지정해야 하는 연결 풀 등록정보입니다.
General
- Pool Name. 새 연결 풀의 이름을 입력합니다.
- DataSource Classname. 데이터 소스를 구현하는 클래스 이름으로 공급자가 지정합니다. New JDBC Connection Pool 페이지의 Database Vendor 목록에서 Other를 선택하는 경우 반드시 사용하려는 데이터 소스의 공급자가 지정한 클래스 이름을 입력해야 합니다. 참고로 이 클래스는 반드시 javax.sql.DataSource를 구현해야 합니다.
Properties
표준 및 사유 JDBC 연결 풀 등록 정보를 지정합니다. 이 등록 정보 중 많은 부분은 선택입니다. 기본적으로 표준 등록 정보의 이름은 모두 입력되어 있습니다. 어떤 표준 및 공급자 지정 등록 정보가 필요한지 결정하려면 데이터베이스 공급자의 설명서를 참조하십시오.
Pool Settings
- Steady Pool Size. 풀이 유지해야 하는 최소 연결 수를 지정합니다. 요청하는 스레드에 연결이 부여되면 연결은 풀에서 제거되므로 현재 풀 크기가 작아집니다. 고정된 풀 크기는 또한 서버가 시작할 때 풀에 추가되는 연결의 수를 나타냅니다.
- Max Pool Size. 임의 시간에 풀에서 허용할 수 있는 연결의 최대 수를 지정합니다.
- Pool Resize Quantity. 풀이 고정된 풀 크기까지 줄어들면 풀의 크기가 배치 작업으로 조정됩니다. 이 값에 따라 배치의 크기가 결정됩니다. 이 값을 너무 크게 하면 연결 재사용이 지연되며, 너무 작게 하면 효율성이 떨어집니다. 참고로 풀의 용량은 한 번에 하나의 연결 단위로 증가되므로 이 필드는 풀 용량의 증가에 영향을 미치지 않습니다.
- Idle Timeout (secs). 풀에서 연결이 유휴 상태를 유지할 수 있는 최대 시간을 초 단위로 지정합니다. 이 시간이 경과하면 풀 구현에 따라 해당 연결을 끊을 수 있습니다.
- Max Wait Time (milli secs). 호출자에게 연결 제한 시간이 지정될 때까지 대기하는 시간을 지정합니다. 기본 대기 시간은 long으로, 호출자는 오랜 시간 동안 대기할 수 있습니다. 이 값을 0으로 설정하면 호출자는 연결이 사용 가능해질 때까지 차단됩니다.
Connection Validation
- Connection Validation Required. 이 필드를 선택하면 연결이 응용 프로그램으로 전달되기 전에 확인 과정을 거칩니다. 따라서 네트워크 고장 또는 데이터베이스 서버 장애로 인하여 데이터베이스를 사용할 수 없는 경우 서버가 자동으로 데이터베이스 연결을 재설정할 수 있습니다. 연결 확인에는 추가의 오버헤드가 필요하므로 성능이 약간 저하될 수 있습니다.
- Validation Method. 웹 서버가 데이터베이스 확인에 사용할 방법을 지정합니다. 다음의 값을 선택합니다.
- auto-commit. 이 모드의 경우 쿼리문이 개별 트랜잭션으로 실행 및 커밋됩니다. auto-commit을 사용하지 않도록 설정하면 쿼리문은 커밋 또는 롤백 메커니즘에 의하여 종료될 수 있는 트랜잭션으로 그룹화됩니다.
- meta-data. 이 모드의 경우 연결의 데이터베이스가 해당 테이블, 저장된 프로시저 등에 대한 메타 정보를 제공할 수 있습니다. meta-data 개체의 각 인스턴스에는 이에 연결된 특정 쿼리가 있습니다. meta-data 개체는 해당 쿼리를 실행하고 결과를 캐시합니다.
- table. 이 방법의 경우 웹 서버가 사용자 지정 테이블에 대한 쿼리를 수행해야 합니다.
- Table Name. Validation Method 드롭 다운 목록에서 유효성 검사 옵션 table을 선택하는 경우 여기에 테이블 이름을 지정합니다.
- Fail All Connections. 풀에 있는 모든 연결을 차단한 후 다시 설정하여 단일 연결이 실패했는지 확인하도록 할 것인지 지정합니다. 선택하지 않는 경우 연결은 사용되는 경우에만 개별적으로 재설정됩니다.
Transaction Isolation
트랜잭션이 사용하는 분리 수준에 따라 다른 사용자의 트랜잭션에 의한 변경에 대한 응용 프로그램의 민감도가 달라지며, 따라서 이러한 변경에 대한 보호를 위하여 트랜잭션이 잠금을 유지해야 하는 시간이 결정됩니다.
- Transaction Isolation. 이 연결용 트랜잭션 분리 수준을 선택할 수 있습니다. 다음의 값을 선택합니다.
- read-uncommitted. dirty read라도고 하며, 이 옵션을 사용하면 데이터의 커밋 여부에 상관 없이 트랜잭션이 현재 데이터 페이지에 있는 모든 데이터를 읽을 수 있습니다.
- read-committed. 데이터의 공유 잠금을 다른 트랜잭션이 변경했지만 아직 커밋하지 않은 데이터를 읽을 수 없도록 하는 방식으로 적용합니다. 커밋되지 않은 데이터는 읽을 수 없으므로 read-committed 분리로 실행되는 트랜잭션이 데이터를 다시 쿼리하면, 해당 데이터가 변경되거나 원래 쿼리의 범주에 해당하는 추가 데이터가 표시될 수 있습니다.
- repeatable-read. 쿼리에서 사용되는 모든 데이터에 잠금이 적용되도록 합니다. 트랜잭션을 커밋하거나 롤백하지 않는 한 해당 트랜잭션이 사용하는 데이터를 다른 사용자가 수정할 수 없습니다.
- serializable. 잠금은 데이터 전체에 적용되므로 쿼리가 다시 수행되는 경우, 첫 번째와 두 번째 쿼리 사이의 시간 동안 데이터가 변경되거나 추가 데이터 열이 표시되지 않습니다.
- Guarantee Isolation Level. 풀에서 가져온 모든 연결에 일정한 수준의 분리가 적용되도록 합니다. 예를 들어 해당 연결의 분리 수준이 지난 번 사용할 때 프로그램적으로 (예를 들어 con.setTransactionIsolation) 변경되는 경우, 이 메커니즘은 지정된 분리 수준으로 복구됩니다.
명령줄 인터페이스 사용
명령줄 인터페이스를 사용하여 새 JDBC 연결 풀을 만드는 방법은 부록 A, "명령줄 유틸리티"의 JDBC 연결 풀 생성을 참조하십시오.
JDBC 리소스 생성
JDBC 리소스는 또한 데이터 소스라고도 하며 getConnection()을 사용하여 데이터베이스로의 연결을 만들 수 있습니다. 다음 중 한 가지 방법으로 JDBC 리소스를 만듭니다.
관리 인터페이스 사용
Administration 인터페이스를 사용하여 JDBC 리소스를 만들려면 다음과 같이 합니다.
- Server Manager에 액세스하고 Java 탭을 선택합니다.
- JDBC Resources를 누릅니다.
- New 버튼을 누릅니다.
- 다음 정보를 입력합니다.
- JNDI Name(필수). 응용 프로그램 구성 요소가 JDBC 리소스에 액세스할 때 반드시 사용해야 하는 JNDI 이름을 입력합니다.
- Pool Name(필수). 이 JDBC 리소스가 사용하는 연결 풀의 이름(또는 ID)을 목록에서 선택합니다. 더 자세한 내용은 새 JDBC 연결 풀 생성을 참조하십시오.
- JDBC 리소스를 사용하려면 Data Source Enabled 드롭 다운 목록에서 On을 선택합니다.
JDBC 리소스를 사용하지 않도록 설정하면 어떤 응용 프로그램 구성요소도 이에 연결할 수 없으나, 구성은 서버 인스턴스에 유지됩니다.
- OK를 누릅니다.
- Apply Changes를 누릅니다.
명령줄 인터페이스 사용
명령줄 인터페이스를 사용하여 새 JDBC 리소스를 만드는 방법은 부록 A, "명령줄 유틸리티"의 JDBC 리소스 생성을 참조하십시오.
사용자 정의 리소스 생성
다음과 같이 사용자 정의 리소스를 만들 수 있습니다.
관리 인터페이스 사용
명령줄 인터페이스 사용
명령줄 인터페이스를 사용하여 새 사용자 정의 리소스를 만드는 방법은 부록 A, "명령줄 유틸리티"의 사용자 지정 리소스 생성을 참조하십시오.
외부 JNDI 리소스 생성
다음과 같이 외부 리소스를 만들 수 있습니다.
관리 인터페이스 사용
- Server Manager에 액세스하고 Java 탭을 선택합니다.
- External JNDI Resources를 누릅니다.
- New 버튼을 누릅니다.
- 다음 정보를 입력합니다.
- JNDI Name(필수). 응용 프로그램 구성 요소가 사용자 정의 리소스에 액세스할 때 반드시 사용해야 하는 JNDI 이름을 입력합니다.
- Resource Type(필수). 사용자 정의 리소스의 인증된 유형을 입력합니다.
- Factory Class(필수). 사용자가 작성한 팩토리 클래스의 인증된 이름을 입력합니다. 이에 따라 javax.naming.spi.ObjectFactory가 구현됩니다.
- JNDI Lookup(필수). 외부 저장소에서 조회할 JNDI 값을 입력합니다. 예를 들어, 외부 저장소로 연결하여 메일 클래스를 시험할 외부 리소스를 만드는 경우 JNDI 조회는 cn=testmail이어야 합니다.
- External Resource Enabled(선택). 런타임에 외부 리소스를 사용하도록 하려면 ON을 선택합니다.
- OK를 누릅니다.
- Apply Changes를 누릅니다.
명령줄 인터페이스 사용
명령 줄을 인터페이스를 사용하여 새 사용자 정의 리소스를 만드는 방법은 부록 A, "명령줄 유틸리티"의 외부 JNDI 리소스 생성을 참조하십시오.
Java 기반 리소스 수정여기에서는 Administration 인터페이스를 사용하여 Java 기반 리소스의 등록 정보를 수정하는 방법에 대하여 설명합니다.
JDBC 연결 풀 수정
JDBC 연결 풀의 등록 정보를 수정하려면 다음과 같이 합니다.
JDBC 리소스 수정
JDBC 리소스의 등록 정보를 수정하려면 다음과 같이 합니다.
사용자 정의 리소스 수정
사용자 정의 리소스의 등록 정보를 수정하려면 다음과 같이 합니다.
외부 JNDI 리소스 수정
외부 JNDI 리소스의 등록 정보를 수정하려면 다음과 같이 합니다.
Java 기반 리소스 삭제여기에서는 Administration 인터페이스를 사용하여 J2EE 기반 리소스를 삭제하는 방법에 대하여 설명합니다.
JDBC 연결 풀 삭제
다음과 같은 방법으로 JDBC 리소스를 삭제할 수 있습니다.
Administration Server 사용
Administration Server를 사용하여 JDBC 연결 풀을 삭제하려면 다음과 같이 합니다.
명령줄 유틸리티 사용
사용 가능한 명령줄 옵션의 구문에 대한 내용은 명령줄 유틸리티를 참조하십시오.
JDBC 리소스 삭제
다음과 같은 방법으로 JDBC 리소스를 삭제할 수 있습니다.
Administration Server 사용
Administration Server를 사용하여 JDBC 리소스를 삭제하려면 다음과 같이 합니다.
명령줄 유틸리티 사용
사용 가능한 명령줄 옵션의 구문에 대한 내용은 명령줄 유틸리티를 참조하십시오.
사용자 정의 리소스 삭제
다음과 같은 방법으로 사용자 정의 리소스를 삭제할 수 있습니다.
Administration Server 사용
Administration Server를 사용하여 사용자 정의 리소스를 삭제하려면 다음과 같이 합니다.
명령줄 유틸리티 사용
사용 가능한 명령줄 옵션의 구문에 대한 내용은 명령줄 유틸리티를 참조하십시오.
외부 JNDI 리소스 삭제
다음과 같은 방법으로 외부 JDBC 리소스를 삭제할 수 있습니다.
Administration Server 사용
Administration Server를 사용하여 외부 JDBC 리소스를 삭제하려면 다음과 같이 합니다.
명령줄 유틸리티 사용
사용 가능한 명령줄 옵션의 구문에 대한 내용은 명령줄 유틸리티를 참조하십시오.