Sun Java System Message Queue 3.7 UR1 관리 설명서

HTTP 지원 활성화

다음 절에서는 HTTP 지원을 활성화하기 위해 수행하는 단계를 설명합니다.

ProcedureHTTP 지원을 활성화하는 방법

  1. HTTP 터널 서블릿을 배포합니다. 다음 서버에 HTTP 터널 서블릿을 배포할 수 있습니다.

    • Sun Java SystemTM Web Server

      • Sun Java System Application Server

  2. 브로커의 httpjms 연결 서비스를 구성하고 브로커를 시작합니다.

  3. HTTP 연결을 구성합니다.

1단계. HTTP 터널 서블릿 배포

HTTP 터널 서블릿을 Sun Java System Web Server 또는 Sun Java System Application Server에 웹 아카이브(.war) 파일로 배포할 수 있습니다.

HTTP 터널 서블릿을 .war 파일로 배포하는 작업은 웹 서버/응용 프로그램 서버에서 제공하는 배포 기법을 사용하여 수행합니다. HTTP 터널 서블릿 .war 파일(imqhttp.war )은 .jar, .war.rar 파일이 포함된 디렉토리에 있으며 운영 체제에 따라 다릅니다(부록 A, 플랫폼별 Message QueueTM 데이터 위치 참조).

.war 파일에는 웹 서버/응용 프로그램 서버에서 서블릿을 로드하여 실행하는 데 필요한 기본 구성 정보가 들어 있는 배포 설명자가 포함되어 있습니다. 웹 서버/응용 프로그램 서버에 따라 서블릿 URL의 컨텍스트 루트 부분을 지정해야 하는 경우도 있습니다.

웹 아카이브 파일로 배포

Sun Java System Web Server 상의 배포는 Sun Java System Web Server에 HTTP 터널 서블릿 배포를 참조하십시오.

Sun Java System Application Server 상의 배포는 Sun Java System Application Server에 HTTP 터널 서블릿 배포를 참조하십시오.

Sun Java System Web Server에 HTTP 터널 서블릿 배포

다음은 Sun Java System Web Server에 배포 시의 참조 지침입니다. 웹 브라우저를 사용하여 서블릿 URL에 액세스함으로써 HTTP 터널 서블릿 배포 성공 여부를 확인할 수 있습니다. 상태 정보를 표시해야 합니다.

ProcedureHTTP 터널 서블릿을 .war 파일로 배포하는 방법

  1. 브라우저 기반 관리 GUI에서 가상 서버 클래스 탭을 선택한 후 클래스 관리를 선택합니다.

  2. 해당 가상 서버 클래스 이름(예: defaultClass)을 선택하고 관리 버튼을 누릅니다.

  3. 가상 서버 관리를 선택합니다.

  4. 해당 가상 서버 이름을 선택하고 관리 버튼을 누릅니다.

  5. 웹 응용 프로그램 탭을 선택합니다.

  6. 웹 응용 프로그램 배포를 누릅니다.

  7. WAR 파일 위치와 WAR 파일 경로 필드에서 imqhttp.war 파일을 가리키는 적절한 값을 선택합니다. 이 파일이 있는 디렉토리는 운영 체제에 따라 다릅니다(부록 A, 플랫폼별 Message QueueTM 데이터 위치 참조).

  8. 응용 프로그램 URI 필드에 경로를 입력합니다.

    응용 프로그램 URI 필드 값은 다음 터널 서블릿 URL의 /contextRoot 부분입니다.

    http://hostName :portNumber / contextRoot/tunnel

    예를 들어, contextRootimq로 설정한 경우 응용 프로그램 URI 필드는 다음과 같습니다.

    /imq

  9. 서블릿을 배포할 설치 디렉토리 경로(일반적으로 Sun Java System Web Server 설치 루트 아래)를 입력합니다.

  10. 확인을 누릅니다.

  11. 웹 서버 인스턴스를 다시 시작합니다.

    이제 서블릿을 다음 주소에서 사용할 수 있습니다.


    http://hostName:portNumber/
    contextRoot/tunnel

    이제 클라이언트에서 이 URL을 통해 HTTP 연결을 사용하는 메시지 서비스에 연결할 수 있습니다.

서버 액세스 로그 비활성화

서버 액세스 로그를 비활성화할 필요는 없지만 그렇게 하면 성능이 향상됩니다.

Procedure서버 액세스 로그를 비활성화하는 방법

  1. 상태 탭을 선택합니다.

  2. 로그 기본 설정 페이지를 선택합니다.

    로그 클라이언트 액세스 제어를 사용하여 로깅을 비활성화합니다.

Sun Java System Application Server에 HTTP 터널 서블릿 배포

이 절에서는 HTTP 터널 서블릿을 Sun Java System Application Server에 .war 파일로 배포한 다음 Sun Java System 브로커에서 연결을 수신하도록 터널 서블릿을 구성하는 방법에 대해 설명합니다.

다음 두 단계를 거쳐야 합니다.

배포 도구 사용

ProcedureApplication Server 환경에서 HTTP 터널 서블릿을 배포하는 방법

  1. 웹 기반 관리 GUI에서 다음을 선택합니다.

    App Server > 인스턴스 > server1 > 응용 프로그램 > 웹 응용 프로그램

  2. 배포 버튼을 누릅니다.

  3. 파일 경로: 텍스트 필드에 HTTP 터널 서블릿 .war 파일(imqhttp.war)의 위치를 입력한 다음 확인을 누릅니다.

    imqhttp.war 파일의 위치는 운영 체제에 따라 다릅니다(부록 A, 플랫폼별 Message QueueTM 데이터 위치 참조).

  4. 컨텍스트 루트 필드의 값을 설정하고 확인을 누릅니다.

    컨텍스트 루트 필드 값은 터널 서블릿 URL의 /contextRoot 부분입니다.

    http:// hostName :portNumber / contextRoot/tunnel

    예를 들어, 컨텍스트 루트 필드를 /imq로 설정할 수 있습니다.

    터널 서블릿이 성공적으로 배포되었고 기본적으로 사용되며 다음 위치(이 예의 경우)에 있음을 나타내는 확인 화면이 표시됩니다.


    /var/opt/SUNWappserver8/domains/domain1/server1/applications/
    j2ee-modules/imqhttp_1

    이제 서블릿을 다음 URL에서 사용할 수 있습니다.


    http://hostName:portNumber/
    contextRoot/tunnel

    이제 클라이언트에서 이 URL을 통해 HTTP 연결을 사용하는 메시지 서비스에 연결할 수 있습니다.

server.policy 파일 수정

Application Server에서 시행하는 일련의 기본 보안 정책은 수정하지 않으면 HTTP 터널 서블릿이 Message Queue 브로커에서 연결을 수신할 수 없도록 합니다.

응용 프로그램 서버 인스턴스마다 해당 보안 정책이나 규칙이 포함된 파일이 있습니다. 예를 들어, Solaris의 server1 인스턴스의 경우 이 파일의 위치는 다음과 같습니다.

/var/opt/SUNWappserver8/domains/domain1/server1/config/
server.policy

터널 서블릿이 Message Queue 브로커에서 연결을 수신하도록 구성하려면 이 파일에 항목을 추가해야 합니다.

Procedure응용 프로그램 서버의 server.policy 파일을 수정하는 방법

  1. server.policy 파일을 엽니다.

  2. 다음 항목을 추가합니다.


    grant codeBase
    "file:/var/opt/SUNWappserver8/domains/domain1/server1/
                    applications/j2ee-modules/imqhttp_1/-”
    {
            permission java.net.SocketPermission "*",
                    "connect,accept,resolve";
    };

2단계. httpjms 연결 서비스 구성

기본적으로 브로커에 대해 HTTP 지원이 활성화되어 있지 않으므로 httpjms 연결 서비스가 활성화되도록 브로커를 재구성해야 합니다. 재구성한 경우 브로커 시작에 설명된 대로 브로커를 시작할 수 있습니다.

Procedurehttpjms 연결 서비스를 활성화하는 방법

  1. 브로커의 인스턴스 구성 파일을 엽니다.

    인스턴스 구성 파일은 구성 파일이 연결되어 있는 브로커 인스턴스의 이름(instanceName)으로 식별되는 디렉토리에 저장됩니다(부록 A, 플랫폼별 Message QueueTM 데이터 위치 참조).

    /instances/ instanceName /props/config.properties

  2. imq.service.activelist 등록 정보에 httpjms 값을 추가합니다.


    imq.service.activelist=jms,admin,httpjms

    브로커는 시작할 때 호스트 시스템에서 실행 중인 웹 서버/응용 프로그램 서버와 HTTP 터널 서블릿을 찾습니다. 그러나 원격 터널 서블릿에 액세스하기 위해 servletHostservletPort 연결 서비스 등록 정보를 재구성할 수 있습니다.

    또한 성능 향상을 위해 pullPeriod 등록 정보를 재구성할 수도 있습니다. httpjms 연결 서비스 구성 등록 정보에 대한 자세한 내용은 2단계. httpjms 연결 서비스 구성을 참조하십시오.

    등록 정보 

    설명 

    imq.httpjms.http.servletHost

    필요한 경우 이 값을 변경하여 HTTP 터널 서블릿을 실행하는 호스트의 이름(호스트 이름 또는 IP 주소)을 지정합니다(원격 호스트이거나 로컬 호스트의 특정 호스트 이름일 수 있음). 기본값: localhost.

    imq.httpjms.http. servletPort

    이 값을 변경하여 브로커가 HTTP 터널 서블릿에 액세스하는 데 사용하는 포트 번호를 지정합니다(웹 서버에서 기본 포트를 변경한 경우 이 등록 정보를 적절히 변경해야 함). 기본값: 7675.

    imq.httpjms.http. pullPeriod

    브로커에서 메시지를 가져오기 위해 각 클라이언트가 런타임에 만든 HTTP 요청 사이의 간격(초)을 지정합니다. (이 등록 정보는 브로커에서 설정되고 클라이언트 런타임에 전파됨). 값이 0 또는 음수인 경우 클라이언트는 하나의 HTTP 요청을 항상 보류 상태로 두고 가능한 빨리 메시지를 가져오도록 준비합니다. 클라이언트 수가 많은 경우 웹/응용 프로그램 서버 자원을 많이 사용하여 서버가 응답하지 않을 수 있습니다. 그런 경우 pullPeriod 등록 정보를 양수(초)로 설정해야 합니다. 이 등록 정보는 후속 가져오기 요청을 만들기 전에 클라이언트의 HTTP 전송 드라이버가 대기하는 시간을 설정합니다. 값을 양수로 설정하면 클라이언트가 응답 시간 동안 대기하는 대신 웹/응용 프로그램 서버 자원이 절약됩니다. 기본값: -1.

    imq.httpjms.http. connectionTimeout

    클라이언트 런타임이 HTTP 터널 서블릿의 응답을 기다리는 시간(초)을 지정합니다. 이 시간이 초과되면 예외가 발생합니다(이 등록 정보는 브로커에서 설정되고 클라이언트 런타임에 전파됨). 이 등록 정보는 브로커가 HTTP 터널 서블릿과 통신한 후 연결을 해제할 때까지 기다리는 시간도 지정합니다. 이 경우에는 브로커와 터널 서블릿이 HTTP 서블릿에 액세스 중인 클라이언트가 비정상적으로 종료했는지 여부를 알 수 없으므로 시간 초과가 필요합니다. 기본값: 60.

3단계. HTTP 연결 구성

클라이언트 응용 프로그램에서는 제대로 구성된 연결 팩토리 관리 객체를 사용해서 브로커에 대한 HTTP 연결을 설정해야 합니다. 이 절에서는 HTTP 연결 구성 문제에 대해 논의합니다.

연결 팩토리 구성

HTTP 지원을 활성화하려면 연결 팩토리의 imqAddressList 속성을 HTTP 터널 서블릿 URL로 설정해야 합니다. HTTP 터널 서블릿 URL의 일반 구문은 다음과 같습니다.

http://hostName:portNumber

/contextRoot/tunnel

여기서 hostName:portNumber는 HTTP 터널 서블릿을 호스트하는 웹 서버/응용 프로그램 서버의 이름과 포트이며, contextRoot는 웹 서버/응용 프로그램 서버에서 터널 서블릿을 배포할 때 설정된 경로입니다.

일반적인 연결 팩토리 속성, 특히 imqAddressList 속성에 대한 자세한 내용은 Java 클라이언트용 Message Queue 개발 안내서를 참조하십시오.

다음 방법 중 하나를 사용하여 연결 팩토리 속성을 설정할 수 있습니다.

단일 서블릿을 사용하여 다중 브로커에 액세스

다중 브로커를 실행할 경우 다중 웹 서버/응용 프로그램 서버 및 서블릿 인스턴스를 구성하지 않아도 됩니다. 동시에 실행 중인 브로커 간에 단일 웹 서버/응용 프로그램 서버와 HTTP 터널 서블릿 인스턴스를 공유할 수 있습니다. 다중 브로커 인스턴스가 단일 터널 서블릿을 공유하는 경우 imqAddressList 연결 팩토리 속성을 다음과 같이 구성해야 합니다.

http://hostName:portNumber

/contextRoot/tunnel?ServerName=
bkrHostName:instanceName

여기서 bkrHostName은 브로커 인스턴스 호스트 이름이고 instanceName은 클라이언트가 액세스할 특정 브로커 인스턴스의 이름입니다.

bkrHostNameinstanceName에 정확한 문자열을 입력했는지 확인하려면 브라우저에서 서블릿 URL에 액세스하여 HTTP 터널 서블릿의 상태 보고서를 생성합니다. 보고서에는 서블릿이 액세스하는 모든 브로커가 나열됩니다.


HTTP tunnel servlet ready.
Servlet Start Time : Thu May 30 01:08:18 PDT 2005
Accepting TCP connections from brokers on port : 7675
Total available brokers = 2
Broker List :
   jpgserv:broker2
   cochin:broker1

HTTP 프록시 사용

HTTP 프록시를 사용해서 HTTP 터널 서블릿에 액세스하는 경우

클라이언트 응용 프로그램을 시작하는 명령에 -D 옵션을 사용하여 이러한 등록 정보를 설정할 수 있습니다.