제7장 External Resource

내용 목차

7.1. 리소스 종류
7.2. 리소스 설정
7.2.1. 데이터소스의 설정
7.2.2. 메일 소스의 설정
7.2.3. URL 소스의 설정
7.2.4. 외부 소스의 설정
7.2.5. JAXR 소스의 설정

본 장에서는 JEUS와 연동하여 하나의 시스템을 구축할 수 있는 다양한 외부 리소스에 대한 소개와 설정 방법에 대해 설명한다. 한가지 주의할 점은, 외부 리소스에 대한 설정은 각 제품의 특성에 좌우될 수 밖에 없으므로 속성이나 사용법에 관한 내용들은 각 외부 리소스의 매뉴얼을 참고해야 한다.

7.1. 리소스 종류

외부 리소스는 애플리케이션이 JEUS를 통해서 접근할 수 있는 JEUS 외부에 존재하는 리소스로 데이터베이스가 대표적인 예이다. 이러한 리소스들은 JEUS에 관련 설정을 추가함으로써 연결이 가능하다.

참고

만약 외부 리소스에서 JCA 표준 호환의 리소스 어댑터를 제공하는 경우에는 리소스 어댑터를 디스플레이해서 사용하길 권장한다.

다음은 JEUS에 설정할 수 있는 리소스이다.

  • 데이터소스

    데이터소스는 JDBC 호환 데이터베이스를 의미한다.

    데이터소스는 클라이언트에서 직접적으로 접근할 수 있는데 이런 경우에는 특별히 JEUS에 설정을 하지 않아도 된다. 그러나 데이터소스를 설정하면 JNDI를 이용해서 JDBC Connection Pool을 사용할 수 있으므로 애플리케이션이 더욱 편리하게 데이터베이스에 접근할 수 있다. 데이터소스의 설정은 “제8장 DB Connection Pool과 JDBC”를 참고한다.

  • 메일 소스

    메일 소스는 SMTP와 같은 메일 프로토콜을 이용하여 클라이언트 애플리케이션으로부터 e-mail을 전송할 때 사용한다. JEUS에서는 JNDI Export name에 e-mail 호스트의 정보를 bind하고, 클라이언트에서 간접적으로 접근하여 호스트를 사용하도록 한다. JNDI를 lookup하면 javax.mail.Session 타입의 메일 소스를 가져온다.

  • URL 소스

    URL 소스는 애플리케이션에서 외부 URL 객체를 JNDI를 통해 접근할 수 있도록 한다. URL이 변경되는 경우 해당 URL 설정을 수정함으로써 애플리케이션의 소스 수정 없이 그대로 사용할 수 있도록 한다.

    JNDI를 lookup하면 java.net.URL 타입의 URL 객체를 가져온다.

  • 외부 소스 - IBM MQ, Sonic MQ

    JEUS와 연결 할 수 있는 비정규화된 소스들을 말한다. 일반적으로 JEUS에 설정할 수 있는 것으로는 IBM MQ, Sonic MQ 등의 JMS(Java Message Service) 제품들과 Tmax TP Monitor 등이 있다.

    이 리소스들은 JEUS에 설정하지 않아도 Java API를 통해서 직접적으로 액세스 할 수도 있다. 그러나 트랜잭션 매니저에서 이 소스들을 관리하려면 설정을 해야 한다(“제9장 트랜잭션 매니저” 참조).

  • JAXR 소스

    JAXR 소스는 JavaEE JAXR 클라이언트가 JNDI로부터 JAXR 커넥션을 얻어 올 수 있는 환경을 제공하기 위하여 사용한다. JEUS에서는 JNDI를 사용하여 JAXR ConnectionFactory를 lookup할 수 있다.

7.2. 리소스 설정

본 절에서는 각각의 외부 리소스들을 JEUSMain.xml에 설정하는 방법을 설명한다.

하나의 <resource> 태그 안에 각각 사용할 리소스에 대한 설정이 들어가는데, 이는 JEUSMain.xml 파일의 최상위 element인 <jeus-system> 하위에 존재한다.

[예 7.1] 리소스 설정 : <<JEUSMain.xml>>

<jeus-system>
    . . .
    <resource>
        <data-source>
            . . .
        </data-source>
        <mail-source>
            . . .
        </mail-source>
        <url-source>
            . . .
        </url-source>
        <external-source>
            . . . 
        </external-source>
        <jaxr-source>
            . . . 
        </jaxr-source>
    </resource>
</jeus-system>

다음은 리소스 종류에 따른 설정법에 대해 설명한다.


7.2.1. 데이터소스의 설정

데이터소스는 데이터베이스 관련 설정을 다루게 된다. 이 내용은 “제8장 DB Connection Pool과 JDBC”에 기술되어 있으므로 해당 절을 참고한다.

7.2.2. 메일 소스의 설정

메일 소스는 <mail-source>에 설정한다. 각각의 SMTP 서버마다 <mail-source>의 <mail-entry>에 각각의 e-mail 호스트에 대한 정보가 들어가게 된다. 이 정보는 JavaMail 스펙을 참고한다.

<mail-entry> 태그의 설정은 다음과 같다.

태그설명
<export-name>JNDI에 Binding될 이름을 지정한다. 설정된 이름으로 java.mail.Session 객체가 Bind된다.
<mail-property>메일 호스트에 대한 속성들을 결정한다. <name>과 <value> 태그의 짝으로 구성 된다. 이 중 속성의 이름(<name> 태그에 쓰임)은 JavaMail 스펙을 따르므로, 스펙을 참고하여 지정하도록 한다.

7.2.3. URL 소스의 설정

URL 소스는 <url-source>에 설정한다. 각각의 URL별로 하위 태그인 <url-entry> 태그를 추가한다.

다음은 JNDI 이름은 'PRIMARY_URL'과 'SECONDARY_URL'이고 각각에 bind되는 URL은 'http://www.foo.com'과 'http://www.bar.com'로 설정한 예이다.

[예 7.2] URL 소스의 설정 : <<JEUSMain.xml>>

<jeus-system>
    . . .
    <resource>
        . . .
        <url-source>
            <url-entry>
                <export-name>
                    PRIMARY_URL
                </export-name>
                <url>
                    http://www.foo.com
                </url>
            </url-entry>
            <url-entry>
                <export-name>
                    SECONDARY_URL
                </export-name>
                <url>
                    http://www.bar.com
                </url>
            </url-entry>
        </url-source>
        . . .
    </resource>
</jeus-system>


다음은 <url-entry> 하위 태그에 대한 설명이다.

태그설명
<export-name>JNDI에 binding될 이름을 지정한다. 이 이름으로 java.net.URL 객체가 bind된다.
<url>실제 URL 주소를 설정한다.

7.2.4. 외부 소스의 설정

외부 소스는 크게 Tmax TP Monitor와 JMS(Java Message Service) 소스로 나뉜다. <external-resource> 태그 하위에는 <jms-source>, <tmax-source>의 2가지 태그가 등장하여 각각에 대한 설정을 담당한다.

JMS 소스(JMS Source)

다음은 외부 JMS소스 설정한 예제이다.

[예 7.3] JMS 소스 설정 : <<JEUSMain.xml>

<jeus-system>
    . . .
    <resource>
        . . .
        <external-source>
          <jms-source>
               <vendor>ibmmq</vendor>
               <factory-class-name> ... </factory-class-name>
               ....
               <property>
                 <name>blah</name>
                 <type>java.lang.String</type>
                 <value>abcd-efg</value>
               </property>
           </jms-source>
       </external-source>
        . . .
    </resource>
</jeus-system>

다음은 <jms-source>의 하위 태그에 대한 설명이다.

태그설명
<vendor>

JMS 벤더를 명시한다.

다음의 값 중에 하나를 설정한다.

  • ibmmq : IBM사의 제품을 의미한다.

  • sonicmq : Sonic MQ를 의미한다.

  • others : 그 외의 제품들을 의미한다.

<factory-class-name>해당 JMS 리소스의 Factory Class의 이름을 지정한다.
<resource-type>

해당하는 JMS의 타입을 결정한다.

다음의 값 중에 하나를 설정한다.

  • QCF

  • TCF

  • Q

  • T

  • XAQCF

  • XATCF

  • LOCALXAQCF

  • LOCALXATCF

<export-name>JNDI에 binding될 이름을 지정한다. 사용자는 이 이름을 이용하여 JMS의 ConnectionFactory, Destination 등을 이용할 수 있다.
<queue><resource-type>이 Q일 때만 사용한다.
<queueManager><resource-type>이 Q일 때만 사용한다.
<topic><resource-type>이 T일 때만 사용한다.
<property>

JMS 리소스에 필요한 속성들을 기록한다.

하위 태그로 <name>, <type>, <value>를 설정한다.

참고

각 태그에 대한 자세한 내용은 자세한 것은 IBM MQ나 Sonic MQ의 매뉴얼을 참조한다.

7.2.5. JAXR 소스의 설정

JEUS에서 JNDI를 사용하여 JAXR ConnectionFactory를 lookup하기 위해서는 <jaxr-source>, <jaxr-entry> 태그에 다음과 같이 등록한다.

[예 7.4] JAXR 소스의 설정 : <<JEUSMain.xml>

<jeus-system>
    . . .
    <resource>
    . . .
        <jaxr-source>
            <jaxr-entry>
                <export-name>REGISTRY_NAME</export-name>
                <query-manager-URL>
                    http://localhost:8088/uddi/inquiry
                </query-manager-URL>
                <lifeCycle-manager-URL>
                    http://localhost:8088/uddi/publish
                </lifeCycle-manager-URL>
            </jaxr-entry>
        </jaxr-source>
    </resource>
    . . .
</jeus-system>

다음은 설정 태그에 대한 설명이다.


항목설명
<query-manager-URL>Target registry provider의 query manager 서비스를 위한 URL이다.
<lifeCycle-manager-URL>Target registry provider의 Lifecycle manager 서비스를 위한 URL이다.