이전 목차 색인 다음 |
Sun Java System Message Queue 3.5 SP1 관리 설명서

> ## 부록 C
> HTTP/HTTPS 지원(엔터프라이즈판)

> Message Queue 엔터프라이즈판("제품 판" 참조)에는 HTTP 및 HTTPS 연결 지원이 포함되어 있습니다(HTTPS는 Secure Socket Layer (SSL) 전송 연결상의 HTTP임). 이 지원을 사용하면 클라이언트 응용 프로그램에서 직접적인 TCP 연결 대신 HTTP 프로토콜을 사용하여 브로커와 통신할 수 있습니다. 이 부록에서는 이 지원의 활성화하는 데 사용되는 구조를 설명하고 클라이언트에서 Message Queue 메시징에 HTTP 기반 연결을 사용할 수 있도록 하는 데 필요한 설정 작업에 대해 설명합니다.

> 주 | HTTP/HTTPS 지원은 Java 클라이언트에 대해 사용할 수 있지만 C 클라이언트에는 사용할 수 없습니다.

> ##

> HTTP/HTTPS 지원 구조

> Message Queue 메시징은 HTTP/HTTPS 연결 위에서 실행할 수 있습니다. HTTP/HTTPS 연결은 보통 방화벽을 통해서도 허용되기 때문에 이렇게 하면 방화벽으로 클라이언트 응용 프로그램과 브로커를 분리할 수 있습니다.

> 그림 C-1에서는 HTTP/HTTPS 지원과 관련된 주요 구성 요소를 보여 줍니다.

> - 클라이언트쪽에서는 HTTP 또는 HTTPS 전송 드라이버가 Message Queue 메시지를 HTTP 요청으로 캡슐화하고 요청이 정확한 순서로 Web Server에 전송되는지 확인합니다.
> - 클라이언트는 필요한 경우 HTTP 프록시 서버를 사용해서 브로커와 통신할 수 있습니다. 프록시의 주소는 클라이언트를 시작할 때 명령줄 옵션을 사용해서 지정합니다. 자세한 내용은 "HTTP 프록시 사용"을 참조하십시오.
> - HTTP 또는 HTTPS 터널 서블릿(모두 Message Queue와 함께 제공)이 Web Server에 로드되고 JMS 메시지를 브로커로 전달하기 전에 클라이언트 HTTP 요청으로부터 추출하는 데 사용됩니다. HTTP/HTTPS 터널 서블릿은 클라이언트에서 이루어진 HTTP 요청에 대한 응답으로 브로커 메시지를 클라이언트에 다시 보내는 작업도 수행합니다. 한 HTTP/HTTPS 터널 서블릿을 사용해서 여러 브로커에 액세스할 수 있습니다.

> 그림 C-1 HTTP/HTTPS 지원 구조

> - 브로커쪽에서는 httpjms 또는 httpsjms 연결 서비스가 해당 터널 서블릿에서 들어오는 메시지를 분해하고 다중화를 해제합니다.
> - Web Server가 오류로 다시 시작되면 모든 연결이 복원되며 클라이언트에는 아무 영향도 주지 않습니다. 브로커가 오류로 다시 시작되면 예외가 발생하며 클라이언트는 연결을 다시 설정해야 합니다. 드물기는 하지만, Web Server와 브로커에 모두 오류가 발생하고 브로커가 다시 시작되지 않은 경우에는 Web Server가 클라이언트 연결을 복원한 후 클라이언트에 알리지 않고 브로커 연결을 계속 기다릴 수 있습니다. 이런 상황을 방지하려면 항상 브로커를 다시 시작해야 합니다.

> 그림 C-1에서 알 수 있듯이, HTTP와 HTTPS가 지원하는 구조는 서로 매우 비슷합니다. 가장 큰 차이는 HTTPS (httpsjms 연결 서비스)의 경우 터널 서블릿이 클라이언트 응용 프로그램과 브로커 모두에 대해 보안 연결을 갖는다는 점입니다.

> 브로커에 대한 보안 연결은 Message Queue의 HTTPS 터널 서블릿에 해당하는 SSL 사용 터널 서블릿을 통해 제공되며 연결을 요청하는 모든 브로커에 자체 서명된 인증서를 전달합니다. 인증서는 브로커가 HTTPS 터널 서블릿에 대해 암호화된 연결을 설정할 때 사용합니다. 이 연결이 설정되고 나면 클라이언트 응용 프로그램과 Web Server에서 클라이언트 응용 프로그램과 터널 서블릿 사이의 보안 연결을 처리할 수 있습니다.

> ##

> HTTP 지원 활성화

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

> ##### HTTP 지원을 활성화하는 방법

> 1. HTTP 터널 서블릿을 Web Server에 배포합니다.
> 2. 브로커의 httpjms 연결 서비스를 구성하고 브로커를 시작합니다.
> 3. HTTP 연결을 구성합니다.

> ### 1단계. Web Server에 HTTP 터널 서블릿 배포

> Web Server에 HTTP 터널 서블릿을 배포하는 일반적인 방법에는 두 가지가 있습니다.

> - jar 파일로 배포 - Servlet 2.1 이전 버전을 지원하는 Web Server용
> - 웹 아카이브(WAR) 파일로 배포 - Servlet 2.2 이상 버전을 지원하는 Web Server용

> #### Jar 파일로 배포

> Message Queue 터널 서블릿 배포는 호스트 Web Server에 액세스할 수 있는 적절한 jar 파일을 생성하고 Web Server 시작 시 서블릿을 로드하도록 구성하며 서블릿 URL의 컨텍스트 루트 부분을 지정하는 작업으로 구성됩니다.

> 터널 서블릿 jar 파일(imqservlet.jar)은 HTTP 터널 서블릿에서 필요한 모든 클래스를 포함하며, 운영 체제에 따라 다른 디렉토리에 있습니다(부록 A, "Message Queue 데이터의 위치" 참조).

> 서블릿 2.x를 지원하는 모든 Web Server를 사용하여 이 서블릿을 로드할 수 있습니다. 서블릿 클래스 이름은 다음과 같습니다.

> com.sun.messaging.jmq.transport.
> httptunnel.servlet.HttpTunnelServlet

> Web Server에서 imqservlet.jar 파일을 볼 수 있어야 합니다. Web Server와 브로커를 서로 다른 호스트에서 실행하려면 imqservlet.jar 파일의 복사본을 Web Server에서 액세스할 수 있는 위치에 저장해야 합니다.

> 또한 Web Server 시작 시 이 서블릿을 로드하도록 구성해야 하며, 서블릿 URL의 컨텍스트 루트 부분을 지정해야 하는 경우도 있습니다("예 1: Sun Java System Web Server에 HTTP 터널 서블릿 배포" 참조).

> 또한 성능 향상을 위해 Web Server의 액세스 로깅 기능은 사용하지 않는 것이 좋습니다.

> #### 웹 아카이브 파일로 배포

> HTTP 터널 서블릿을 WAR 파일로 배포하는 작업은 Web Server에서 제공하는 메커니즘을 사용하여 수행합니다. HTTP 터널 서블릿 WAR 파일(imqhttp.war)은 .jar, .war 및 .rar 파일이 포함된 디렉토리에 있으며, 이 디렉토리는 운영 체제에 따라 다릅니다(부록 A, "Message Queue 데이터의 위치" 참조).

> WAR 파일에는 Web Server에서 서블릿을 로드하여 실행하는 데 필요한 기본 구성 정보가 들어 있는 배포 설명자가 포함되어 있습니다. Web Server에 따라 서블릿 URL의 컨텍스트 루트 부분을 지정해야 하는 경우도 있습니다("예 2: Sun Java System Application Server 7.0에 HTTP 터널 서블릿 배포" 참조).

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

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

> ##### httpjms 연결 서비스를 활성화하는 방법

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

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

> .../instances/instanceName/props/config.properties

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

> imq.service.activelist=jms,admin,httpjms

> 브로커는 시작할 때 호스트 시스템에서 실행 중인 Web Server와 HTTP 터널 서블릿을 찾습니다. 그러나 원격 터널 서블릿에 액세스하기 위해 servletHost 및 servletPort 연결 서비스 등록 정보를 재구성할 수 있습니다.

> 또한 성능 향상을 위해 pullPeriod 등록 정보를 재구성할 수도 있습니다. httpjms 연결 서비스 구성 등록 정보에 대한 자세한 설명은 표 C-1을 참조하십시오.

> 표 C-1 httpjms 연결 서비스 등록 정보

> 등록 정보 이름 | 설명
> --- | ---
> imq.httpjms.http. servletHost | 필요한 경우 이 값을 변경하여 HTTP 터널 서블릿을 실행하는 호스트의 이름(호스트 이름 또는 IP 주소)을 지정합니다(원격 호스트이거나 로컬 호스트의 특정 호스트 이름일 수 있음). 기본값: localhost
> imq.httpjms.http. servletPort | 이 값을 변경하여 브로커가 HTTP 터널 서블릿에 액세스하는 데 사용하는 포트 번호를 지정합니다(Web Server에서 기본 포트를 변경한 경우 이 등록 정보를 적절히 변경해야 함). 기본값: 7675
> imq.httpjms.http. pullPeriod | 클라이언트 런타임이 브로커에서 메시지를 가져오기 위해 만든 HTTP 요청 사이의 간격(초)을 지정합니다(이 등록 정보는 브로커에서 설정되고 클라이언트 런타임에 전파됨). 값이 0 또는 음수인 경우 클라이언트는 하나의 HTTP 요청을 항상 보류 상태로 두고 가능한 빨리 메시지를 가져오도록 준비합니다. 클라이언트 수가 많은 경우 Web Server 자원을 많이 사용하여 서버가 응답하지 않을 수 있습니다. 그런 경우 pullPeriod 등록 정보를 양수(초)로 설정해야 합니다. 이 등록 정보는 후속 가져오기 요청을 만들기 전에 클라이언트의 HTTP 전송 드라이버가 대기하는 시간을 설정합니다. 값을 양수로 설정하면 클라이언트가 응답 시간 동안 대기하는 대신 Web Server 자원이 절약됩니다. 기본값: -1
> imq.httpjms.http. connectionTimeout | 클라이언트 런타임이 HTTP 터널 서블릿의 응답을 기다리는 시간(초)을 지정합니다. 이 시간이 초과되면 예외가 발생합니다(이 등록 정보는 브로커에서 설정되고 클라이언트 런타임에 전파됨). 이 등록 정보는 브로커가 HTTP 터널 서블릿과 통신한 후 연결을 해제할 때까지 기다리는 시간도 지정합니다. 이 경우에는 브로커와 터널 서블릿이 HTTP 서블릿에 액세스 중인 클라이언트가 비정상적으로 종료했는지 여부를 알 수 없으므로 시간 초과가 필요합니다. 기본값: 60

> ### 3단계. HTTP 연결 구성

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

> #### 연결 팩토리 구성

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

> http://hostName:port/contextRoot/tunnel

> 여기서 hostName:port는 HTTP 터널 서블릿을 호스트하는 Web Server의 이름과 포트이며, contextRoot는 Web Server에서 터널 서블릿을 배포할 때 설정된 경로입니다.

> 일반적인 연결 팩토리 속성, 특히 imqAddressList 속성에 대한 자세한 내용은 Message Queue Java Client Developer's Guide를 참조하십시오.

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

> - 연결 팩토리 관리 대상 객체를 만드는 imqobjmgr 명령에 -o 옵션을 사용하거나("연결 팩토리 추가" 참조) 관리 콘솔(imqadmin)을 사용하여 연결 팩토리 관리 대상 객체를 만들 때 속성을 설정합니다.
> - 클라이언트를 시작하는 명령에 -D 옵션을 사용합니다(Message Queue Java Client Developer's Guide 참조).
> - 클라이언트 코드에서 프로그래밍 방식으로 연결 팩토리를 만든 후 API 호출을 사용하여 해당 연결 팩토리의 속성을 설정합니다(Message Queue Java Client Developer's Guide 참조).

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

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

> http://hostName:port/contextRoot/tunnel?ServerName=bkrHostName:instanceName

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

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

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

> #### HTTP 프록시 사용

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

> - http.proxyHost 시스템 등록 정보를 프록시 서버 호스트 이름으로 설정합니다.
> - http.proxyPort 시스템 등록 정보를 프록시 서버 포트 번호로 설정합니다.

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

> ### 예 1: Sun Java System Web Server에 HTTP 터널 서블릿 배포

> 이 절에서는 Sun Java System Web Server에서 HTTP 터널 서블릿을 jar 파일과 WAR 파일로 배포하는 방법을 모두 설명합니다. 사용 방법은 Sun Java System Web Server 버전에 따라 다르지만, Servlet 2.2 이상을 지원하지 않으면 WAR 파일 배포를 처리할 수 없습니다.

> #### Jar 파일로 배포

> 다음은 브라우저 기반 관리 GUI를 사용하여 Sun Java System Web Server 6.1에 배포하는 경우에 대한 지침입니다. 이 절차는 다음과 같은 일반적인 단계로 구성됩니다.

> 1. 서블릿 추가
> 2. 서블릿 가상 경로 구성
> 3. 서블릿 로드
> 4. 서블릿 액세스 로그 비활성화

> 이러한 단계는 다음 하위 절에 설명되어 있습니다. 웹 브라우저를 사용하여 서블릿 URL에 액세스함으로써 HTTP 터널 서블릿 배포 성공 여부를 확인할 수 있습니다. 상태 정보를 표시해야 합니다.

> ##### 서블릿 추가

> ##### 터널 서블릿을 추가하는 방법

> 1. 서블릿 탭을 선택합니다.
> 2. 서블릿 속성 구성을 선택합니다.
> 3. 서블릿 이름 필드에 터널 서블릿의 이름을 지정합니다.
> 4. 서블릿 코드(클래스 이름) 필드를 다음 값으로 설정합니다.

> com.sun.messaging.jmq.transport.
> httptunnel.servlet.HttpTunnelServlet

> 5. 서블릿 클래스 경로 필드에 imqservlet.jar에 대한 전체 경로를 입력합니다. 예를 들면 다음과 같습니다.

> /usr/share/lib/imq/imqservlet.jar (Solaris)

> /opt/imq/lib/imqservlet.jar (Linux)

> IMQ_HOME/lib/imqservlet.jar (Windows)

> 6. 서블릿 인수 필드에 표 C-2와 같은 선택 인수를 입력합니다.

> 표 C-2 HTTP 터널 서블릿 Jar 파일 배포에 사용되는 서블릿 인수

> 인수 | 기본값 | 참조
> --- | --- | ---
> servletHost | 모든 호스트 | 표 C-1 참조
> servletPort | 7675 | 표 C-1 참조

> 두 인수를 모두 사용하는 경우에는 인수 사이를 쉼표로 구분합니다.

> servletPort=portnumber, servletHost=...

> servletHost 및 servletPort 인수는 Web Server와 브로커간 통신에만 적용되며 기본값에 문제가 있는 경우에만 설정됩니다. 그런 경우에도 브로커 구성 등록 정보를 적절하게 설정해야 합니다(표 C-1 참조). 예를 들면 다음과 같습니다.

> imq.httpjms.http.servletPort

> ##### 서블릿 가상 경로(서블릿 URL) 구성

> ##### 터널 서블릿에 대한 가상 경로(서블릿 URL)를 구성하는 방법

> 1. 서블릿 탭을 선택합니다.
> 2. 서블릿 가상 경로 변환 구성을 선택합니다.
> 3. 가상 경로 필드를 설정합니다.

> 가상 경로는 터널 서블릿 URL의 /contextRoot/tunnel 부분입니다.

> http://hostName:port/contextRoot/tunnel

> 예를 들어, contextRoot를 imq로 설정했다면 가상 경로 필드는 다음과 같습니다.

> /imq/tunnel

> 4. 서블릿 이름 필드를 "서블릿 추가"의 단계 3과 동일한 값으로 설정합니다.

> ##### 서블릿 로드

> ##### Web Server 시작 시 터널 서블릿을 로드하는 방법

> 1. 서블릿 탭을 선택합니다.
> 2. 전역 속성 구성을 선택합니다.
> 3. 시작 서블릿 필드에 "서블릿 추가"의 단계 3과 동일한 서블릿 이름 값을 입력합니다.

> ##### 서버 액세스 로그 비활성화

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

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

> 1. 상태 탭을 선택합니다.
> 2. 로그 기본 설정 페이지를 선택합니다.
> 3. 로그 클라이언트 액세스 제어를 사용하여 로깅을 비활성화합니다.

> #### WAR 파일로 배포

> 다음은 Sun Java System Web Server 6.0 서비스에 배포하는 경우에 대한 지침입니다.
> 웹 브라우저를 사용하여 서블릿 URL에 액세스하면 HTTP 터널 서블릿의 배포 성공 여부를 확인할 수 있습니다. 상태 정보를 표시해야 합니다.

> ##### http 터널 서블릿을 WAR 파일로 배포하는 방법

> 1. 브라우저 기반 관리 GUI에서 가상 서버 클래스 탭을 선택한 후 클래스 관리를 선택합니다.
> 2. 해당 가상 서버 클래스 이름(예: defaultClass)을 선택하고 관리 버튼을 누릅니다.
> 3. 가상 서버 관리를 선택합니다.
> 4. 해당 가상 서버 이름을 선택하고 관리 버튼을 누릅니다.
> 5. 웹 응용 프로그램 탭을 선택합니다.
> 6. 웹 응용 프로그램 배포를 누릅니다.
> 7. WAR 파일 위치 및 WAR 파일 경로 필드에서 imqhttp.war 파일을 가리키는 적절한 값을 선택합니다. 이 파일이 있는 디렉토리는 운영 체제에 따라 다릅니다(부록 A, "Message Queue 데이터의 위치" 참조).
> 8. 응용 프로그램 URI 필드에 경로를 입력합니다.

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

> http://hostName:port/contextRoot/tunnel

> 예를 들어, contextRoot를 imq로 설정했다면 응용 프로그램 URI 필드는 다음과 같습니다.

> /imq

> 9. 서블릿을 배포할 설치 디렉토리 경로(일반적으로 Sun Java System Web Server 설치 루트 아래)를 입력합니다.
> 10. 확인을 누릅니다.
> 11. Web Server 인스턴스를 다시 시작합니다.

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

> http://hostName:port/contextRoot/tunnel

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

> ### 예 2: Sun Java System Application Server 7.0에 HTTP 터널 서블릿 배포

> 이 절에서는 Sun Java System Application Server 7.0에서 HTTP 터널 서블릿을 WAR 파일로 배포하는 방법을 설명합니다.

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

> - Application Server 7.0 배포 도구를 사용하여 HTTP 터널 서블릿 배포
> - Application Server 인스턴스의 server.policy 파일 수정

> #### 배포 도구 사용

> ##### Application Server 7.0 환경에 HTTP 터널 서블릿을 배포하는 방법

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

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

> 2. 배포 버튼을 누릅니다.
> 3. 파일 경로: 텍스트 필드에 HTTP 터널 서블릿 WAR 파일(imqhttp.war)의 위치를 입력합니다.

> imqhttp.war 파일의 위치는 운영 체제에 따라 다릅니다(부록 A, "Message Queue 데이터의 위치" 참조).

> 4. 확인을 누릅니다.
> 5. 다음 화면에서 컨텍스트 루트 텍스트 필드의 값을 설정합니다.

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

> http://hostName:port/contextRoot/tunnel

> 예를 들어, 컨텍스트 루트 필드를 다음과 같이 설정할 수 있습니다.

> /imq

> 6. 확인을 누릅니다.

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

> /var/opt/SUNWappserver7/domains/domain1/server1/applications/
> j2ee-modules/imqhttp_1

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

> http://hostName:port/contextRoot/tunnel

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

> #### server.policy 파일 수정

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

> Application Server 인스턴스마다 해당 보안 정책이나 규칙이 포함된 파일이 있습니다. 예를 들어, Solaris의 server1 인스턴스의 경우 이 파일의 위치는 다음과 같습니다.

> /var/opt/SUNWappserver7/domains/domain1/server1/config/
> server.policy

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

> ##### Application Server의 server.policy 파일을 수정하는 방법

> 1. server.policy 파일을 엽니다.
> 2. 다음 항목을 추가합니다.

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

> ##

> HTTPS 지원 활성화

> 다음 절에서는 HTTPS 지원을 활성화하기 위해 수행하는 단계에 대해 설명합니다. "HTTP 지원 활성화"와 비슷한 내용에 SSL 인증서 생성 및 액세스에 필요한 단계가 추가되어 있습니다.

> ##### HTTPS 지원을 활성화하는 방법

> 1. HTTPS 터널 서블릿에 대해 자체 서명된 인증서를 생성합니다.
> 2. HTTPS 터널 서블릿을 Web Server에 배포합니다.
> 3. 브로커의 httpsjms 연결 서비스를 구성하고 브로커를 시작합니다.
> 4. HTTPS 연결을 구성합니다.

> 각 단계에 대해서는 뒤에서 자세히 설명합니다.

> ### 1단계. HTTPS 터널 서블릿에 대해 자체 서명된 인증서 생성

> Message Queue의 SSL 지원은 클라이언트가 알려지고 신뢰할 수 있는 서버와 통신한다는 가정 하에 전송 데이터를 보호하기 위한 것입니다. 따라서 자체 서명된 서버 인증서만 사용하여 SSL을 구현합니다. httpsjms 연결 서비스 구조에서 HTTPS 터널 서블릿은 브로커와 응용 프로그램 클라이언트에 대해 서버 역할을 담당합니다.

> imqkeytool 유틸리티를 실행하여 터널 서블릿에 대해 자체 서명된 인증서를 생성합니다. 명령 프롬프트에서 다음을 입력합니다.

> imqkeytool -servlet keystore_location

> 유틸리티는 필요한 정보를 묻는 메시지를 표시합니다(Unix 시스템에서 키 저장소를 만들 권한을 가지려면 imqkeytool을 수퍼유저(루트)로 실행해야 할 수도 있음).

> imqkeytool은 키 저장소 비밀번호, 일부 조직 정보 및 사용자의 확인을 묻는 메시지를 차례로 표시합니다. 확인이 끝나면 키 쌍을 생성하는 동안 일시 중지됩니다. 그런 다음 특정 키 쌍을 잠글 비밀번호(키 비밀번호)를 묻습니다. 이 프롬프트에 대한 응답으로 Return 키를 눌러야 합니다. 그러면 키 비밀번호가 키 저장소 비밀번호와 동일하게 지정됩니다.

> 주 | 입력한 비밀번호를 기억해야 합니다. 나중에 이 비밀번호를 제공해야 터널 서블릿이 키 저장소를 열 수 있습니다.

> imqkeytool을 실행하면 JDK keytool 유틸리티를 실행하여 자체 서명된 인증서를 생성하고 keystore_location 인수에서 지정한 위치의 Message Queue 키 저장소 파일에 넣을 수 있습니다(키 저장소의 형식은 JDK1.2 keytool에서 지원하는 것과 같음).

> 주 | HTTPS 터널 서블릿에서 키 저장소를 볼 수 있어야 합니다. keystore_location에 생성된 키 저장소를 HTTPS 터널 서블릿에서 액세스할 수 있는 위치로 이동/복사합니다("2단계. Web Server에 HTTPS 터널 서블릿 배포" 참조).

> ### 2단계. Web Server에 HTTPS 터널 서블릿 배포

> Web Server에 HTTPS 터널 서블릿을 배포하는 일반적인 방법에는 두 가지가 있습니다.

> - jar 파일로 배포 - Servlet 2.1 이전 버전을 지원하는 Web Server용
> - 웹 아카이브(WAR) 파일로 배포 - Servlet 2.2 이상 버전을 지원하는 Web Server용

> 두 경우 모두 클라이언트와 브로커 사이에서 종단간 보안 통신이 이루어질 수 있도록 Web Server에 암호화가 활성화되었는지 확인해야 합니다.

> #### Jar 파일로 배포

> Message Queue 터널 서블릿 배포는 호스트 Web Server에 액세스할 수 있는 적절한 jar 파일을 생성하고 Web Server 시작 시 서블릿을 로드하도록 구성하며 서블릿 URL의 컨텍스트 루트 부분을 지정하는 작업으로 구성됩니다.

> 터널 서블릿 jar 파일(imqservlet.jar)은 HTTPS 터널 서블릿에서 필요한 모든 클래스를 포함하며, 운영 체제에 따라 다른 디렉토리에 있습니다(부록 A, "Message Queue 데이터의 위치" 참조).

> 서블릿 2.x를 지원하는 모든 Web Server를 사용하여 이 서블릿을 로드할 수 있습니다. 서블릿 클래스 이름은 다음과 같습니다.

> com.sun.messaging.jmq.transport.
> httptunnel.servlet.HttpsTunnelServlet

> Web Server에서 imqservlet.jar 파일을 볼 수 있어야 합니다. Web Server와 브로커를 서로 다른 호스트에서 실행하려면 imqservlet.jar 파일의 복사본을 Web Server에서 액세스할 수 있는 위치에 저장해야 합니다.

> 또한 Web Server 시작 시 이 서블릿을 로드하도록 구성해야 하며, 서블릿 URL의 컨텍스트 루트 부분을 지정해야 하는 경우도 있습니다("예 3: Sun Java System Web Server에 HTTPS 터널 서블릿 배포" 참조).

> JSSE jar 파일이 Web Server에서 서블릿을 실행하는 클래스 경로에 있는지 확인합니다. 수행 방법은 Web Server 설명서를 확인하십시오.

> Web Server 구성에서 중요한 부분 중 하나는 HTTPS 터널 서블릿에서 브로커와 보안 연결을 설정할 때 사용할 자체 서명된 인증서의 위치와 비밀번호를 지정하는 것입니다. "1단계. HTTPS 터널 서블릿에 대해 자체 서명된 인증서 생성"에서 만든 키 저장소를 HTTPS 터널 서블릿에서 액세스할 수 있는 위치에 두어야 합니다.

> 또한 성능 향상을 위해 Web Server의 액세스 로깅 기능은 사용하지 않는 것이 좋습니다.

> #### 웹 아카이브 파일로 배포

> HTTPS 터널 서블릿을 WAR 파일로 배포하는 작업은 Web Server에서 제공하는 배포 메커니즘을 사용하여 수행합니다. HTTPS 터널 서블릿 WAR 파일(imqhttps.war)은 운영 체제에 따라 다른 디렉토리에 있습니다(부록 A, "Message Queue 데이터의 위치" 참조).

> WAR 파일에는 Web Server에서 서블릿을 로드하여 실행하는 데 필요한 기본 구성 정보가 들어 있는 배포 설명자가 포함되어 있습니다. Web Server에 따라 서블릿 URL의 컨텍스트 루트 부분을 지정해야 하는 경우도 있습니다("예 4: Sun Java System Application Server 7.0에 HTTPS 터널 서블릿 배포" 참조).

> 하지만 imqhttps.war 파일의 배포 설명자에서는 터널 서블릿에 필요한 키 저장소 파일이 있는 위치를 알 수 없습니다("1단계. HTTPS 터널 서블릿에 대해 자체 서명된 인증서 생성" 참조). 따라서 imqhttps.war 파일을 배포하기 전에 터널 서블릿의 배포 설명자(XML 파일)를 편집하여 키 저장소 위치를 지정해야 합니다.

> ### 3단계. httpsjms 연결 서비스 구성

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

> ##### httpsjms 연결 서비스를 활성화하는 방법

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

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

> .../instances/instanceName/props/config.properties

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

> imq.service.activelist=jms,admin,httpsjms

> 브로커는 시작할 때 호스트 시스템에서 실행 중인 Web Server와 HTTPS 터널 서블릿을 찾습니다. 그러나 원격 터널 서블릿에 액세스하기 위해 servletHost 및 servletPort 연결 서비스 등록 정보를 재구성할 수 있습니다.

> 또한 성능 향상을 위해 pullPeriod 등록 정보를 재구성할 수도 있습니다. httpsjms 연결 서비스 구성 등록 정보에 대한 자세한 설명은 표 C-3을 참조하십시오.

> 표 C-3 httpsjms 연결 서비스 등록 정보

> 등록 정보 이름 | 설명
> --- | ---
> imq.httpsjms.https servletHost | 필요한 경우 이 값을 변경하여 HTTPS 터널 서블릿을 실행하는 호스트의 이름(호스트 이름 또는 IP 주소)을 지정합니다(원격 호스트이거나 로컬 호스트의 특정 호스트 이름일 수 있음). 기본값: localhost
> imq.httpsjms.https servletPort | 이 값을 변경하여 브로커가 HTTPS 터널 서블릿에 액세스하는 데 사용하는 포트 번호를 지정합니다(Web Server에서 기본 포트를 변경한 경우 이 등록 정보를 적절히 변경해야 함). 기본값: 7674
> imq.httpsjms.https pullPeriod | 브로커에서 메시지를 가져오기 위해 각 클라이언트가 만든 HTTP 요청 사이의 간격(초)을 지정합니다(이 등록 정보는 브로커에서 설정되고 클라이언트 런타임에 전파됨). 값이 0 또는 음수인 경우 클라이언트는 하나의 HTTP 요청을 항상 보류 상태로 두고 가능한 빨리 메시지를 가져오도록 준비합니다. 클라이언트 수가 많은 경우 Web Server 자원을 많이 사용하여 서버가 응답하지 않을 수 있습니다. 그런 경우 pullPeriod 등록 정보를 양수(초)로 설정해야 합니다. 이 등록 정보는 후속 가져오기 요청을 만들기 전에 클라이언트의 HTTP 전송 드라이버가 대기하는 시간을 설정합니다. 값을 양수로 설정하면 클라이언트가 응답 시간 동안 대기하는 대신 Web Server 자원이 절약됩니다. 기본값: -1
> imq.httpsjms.https connectionTimeout | 클라이언트 런타임이 HTTPS 터널 서블릿의 응답을 기다리는 시간(초)을 지정합니다. 이 시간이 초과되면 예외가 발생합니다(이 등록 정보는 브로커에서 설정되고 클라이언트 런타임에 전파됨). 이 등록 정보는 브로커가 HTTPS 터널 서블릿과 통신한 후 연결을 해제할 때까지 기다리는 시간도 지정합니다. 이 경우에는 브로커와 터널 서블릿이 HTTPS 서블릿에 액세스 중인 클라이언트가 비정상적으로 종료했는지 여부를 알 수 없으므로 시간 초과가 필요합니다. 기본값: 60

> ### 4단계. HTTPS 연결 구성

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

> 하지만 클라이언트는 Java Secure Socket Extension (JSSE)에서 제공하는 SSL 라이브러리에도 액세스해야 하며 루트 인증서도 있어야 합니다. SSL 라이브러리는 JDK 1.4와 함께 제공됩니다. 이전 버전의 JDK가 있는 경우에는 "JSSE 구성"을 참조하십시오. 그렇지 않으면 "루트 인증서 가져오기"로 이동하십시오.

> 이 문제를 해결하고 나면 계속해서 HTTPS 연결을 구성할 수 있습니다.

> #### JSSE 구성

> ##### JSSE를 구성하는 방법

> 1. JSSE jar 파일을 JRE_HOME/lib/ext 디렉토리로 복사합니다.

> jsse.jar, jnet.jar, jcert.jar

> 2. JSSE 보안 공급자를 정적으로 추가합니다. 이 작업은

> security.provider.n=com.sun.net.ssl.internal.ssl.Provider

> 를 JRE_HOME/lib/security/java.security 파일에 추가하여 수행할 수 있습니다. (여기서 n은 보안 공급자 패키지에서 다음으로 사용할 수 있는 우선 순위 번호입니다.)

> 3. JDK1.4를 사용하지 않는 경우에는 클라이언트 응용 프로그램을 시작하는 명령에 -D 옵션을 사용해서 다음 JSSE 등록 정보를 설정해야 합니다.

> java.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol

> #### 루트 인증서 가져오기

> Web Server 인증서에 서명한 CA의 루트 인증서가 기본적으로 트러스트 데이터베이스에 있지 않거나 독자적인 Web Server 인증서를 사용하는 경우에는 인증서를 트러스트 데이터베이스에 추가해야 합니다. 여기에 해당되면 다음 지침에 따르고, 그렇지 않으면 "연결 팩토리 구성"으로 이동합니다.

> 인증서가 cert_file에 저장되어 있고 trust_store_file이 키 저장소라면 다음 명령을 실행합니다.

> JRE_HOME/bin/keytool -import -trustcacerts
> -alias alias_for_certificate -file cert_file
> -keystore trust_store_file

> 다음 질문에 YES로 응답합니다. Trust this certificate?

> 클라이언트 응용 프로그램을 시작하는 명령에 -D 옵션을 사용해서 다음과 같은 JSSE 등록 정보도 지정해야 합니다.

> javax.net.ssl.trustStore=trust_store_file

> javax.net.ssl.trustStorePassword=trust_store_passwd

> #### 연결 팩토리 구성

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

> https://hostName:port/contextRoot/tunnel

> 여기서 hostName:port는 HTTPS 터널 서블릿을 호스트하는 Web Server의 이름과 포트이며, contextRoot는 Web Server에 터널 서블릿을 배포할 때 설정된 경로입니다.

> 일반적인 연결 팩토리 속성, 특히 imqAddressList 속성에 대한 자세한 내용은 Message Queue Java Client Developer's Guide를 참조하십시오.

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

> - 연결 팩토리 관리 대상 객체를 만드는 imqobjmgr 명령에 -o 옵션을 사용하거나("연결 팩토리 추가" 참조) 관리 콘솔(imqadmin)을 사용하여 연결 팩토리 관리 대상 객체를 만들 때 속성을 설정합니다.
> - 클라이언트 응용 프로그램을 시작하는 명령에 -D 옵션을 사용합니다(Message Queue Java Client Developer's Guide 참조).
> - 클라이언트 응용 프로그램 코드에서 프로그래밍 방식으로 연결 팩토리를 만든 후 API 호출을 사용하여 해당 연결 팩토리의 속성을 설정합니다(Message Queue Java Client Developer's Guide 참조).

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

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

> https://hostName:port/contextRoot/tunnel?ServerName=bkrHostName:instanceName

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

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

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

> #### HTTP 프록시 사용

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

> - http.proxyHost 시스템 등록 정보를 프록시 서버 호스트 이름으로 설정합니다.
> - http.proxyPort 시스템 등록 정보를 프록시 서버 포트 번호로 설정합니다.

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

> ### 예 3: Sun Java System Web Server에 HTTPS 터널 서블릿 배포

> 이 절에서는 Sun Java System Web Server에서 HTTPS 터널 서블릿을 jar 파일과 WAR 파일로 배포하는 방법을 모두 설명합니다. 사용 방법은 Sun Java System Web Server 버전에 따라 다르지만, Servlet 2.2 이상을 지원하지 않는다면 WAR 파일 배포를 처리할 수 없습니다.

> #### Jar 파일로 배포

> 다음은 브라우저 기반 관리 GUI를 사용하여 Sun Java System Web Server 6.1에 배포하는 경우에 대한 지침입니다. 이 절차는 다음과 같은 일반적인 단계로 구성됩니다.

> 1. 서블릿 추가
> 2. 서블릿 가상 경로 구성
> 3. 서블릿 로드
> 4. 서블릿 액세스 로그 비활성화

> 이러한 단계는 다음 하위 절에 설명되어 있습니다. 웹 브라우저를 사용하여 서블릿 URL에 액세스함으로써 HTTPS 터널 서블릿 배포 성공 여부를 확인할 수 있습니다. 상태 정보를 표시해야 합니다.

> ##### 서블릿 추가

> ##### 터널 서블릿을 추가하는 방법

> 1. 서블릿 탭을 선택합니다.
> 2. 서블릿 속성 구성을 선택합니다.
> 3. 서블릿 이름 필드에 터널 서블릿의 이름을 지정합니다.
> 4. 서블릿 코드(클래스 이름) 필드를 다음 값으로 설정합니다.

> com.sun.messaging.jmq.transport.
> httptunnel.servlet.HttpsTunnelServlet

> 5. 서블릿 클래스 경로 필드에 imqservlet.jar에 대한 전체 경로를 입력합니다. 예를 들면 다음과 같습니다.

> /usr/share/lib/imq/imqservlet.jar (Solaris)

> /opt/imq/lib/imqservlet.jar (Linux)

> IMQ_HOME/lib/imqservlet.jar (Windows)

> 6. 서블릿 인수 필드에 표 C-4와 같은 필수 및 선택 인수를 입력합니다.

> 표 C-4 HTTPS 터널 서블릿 Jar 파일 배포에 사용되는 서블릿 인수

> 인수 | 기본값 | 필수? | 참조
> --- | --- | --- | ---
> keystoreLocation | 없음 | 예 | 표 8-8
> keystorePassword | 없음 | 예 | 표 8-8
> servletHost | 모든 호스트 | 아니요 | 표 C-3
> servletPort | 7674 | 아니요 | 표 C-3

> 인수를 다음 예와 같이 쉼표로 분리합니다.

> keystoreLocation=keystore_location,keystorePassword=keystore_password, servletPort=portnumber

> servletHost 및 servletPort 인수는 Web Server와 브로커간 통신에만 적용되며 기본값에 문제가 있는 경우에만 설정됩니다. 그런 경우에도 브로커 구성 등록 정보를 적절하게 설정해야 합니다(표 C-3 참조). 예를 들면 다음과 같습니다.

> imq.httpsjms.https.servletPort

> ##### 서블릿 가상 경로(서블릿 URL) 구성

> ##### 터널 서블릿에 대한 가상 경로(서블릿 URL)를 구성하는 방법

> 1. 서블릿 탭을 선택합니다.
> 2. 서블릿 가상 경로 변환 구성을 선택합니다.
> 3. 가상 경로 필드를 설정합니다.

> 가상 경로는 터널 서블릿 URL의 /contextRoot/tunnel 부분입니다.

> https://hostName:port/contextRoot/tunnel

> 예를 들어, contextRoot를 imq로 설정한 경우 가상 경로 필드는 다음과 같습니다.

> /imq/tunnel

> 4. 서블릿 이름 필드를 "서블릿 추가"의 단계 3과 동일한 값으로 설정합니다.

> ##### 서블릿 로드

> ##### Web Server 시작 시 터널 서블릿을 로드하는 방법

> 1. 서블릿 탭을 선택합니다.
> 2. 전역 속성 구성을 선택합니다.
> 3. 시작 서블릿 필드에 "서블릿 추가"의 단계 3과 동일한 서블릿 이름 값을 입력합니다.

> ##### 서버 액세스 로그 비활성화

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

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

> 1. 상태 탭을 선택합니다.
> 2. 로그 기본 설정 페이지를 선택합니다.
> 3. 로그 클라이언트 액세스 제어를 사용하여 로깅을 비활성화합니다.

> #### WAR 파일로 배포

> 다음은 Sun Java System Web Server 6.0 서비스에 배포하는 경우에 대한 지침입니다.
> 웹 브라우저를 사용하여 서블릿 URL에 액세스하면 HTTPS 터널 서블릿의 배포 성공 여부를 확인할 수 있습니다. 상태 정보를 표시해야 합니다.

> HTTPS 터널 서블릿을 배포하기 전에 Web Server의 클래스 경로에 JSSE jar 파일이 포함되어 있는지 확인합니다. 이 작업을 수행하는 가장 간단한 방법은 jsse.jar, jnet.jar 및 jcert.jar 파일을 IWS60_TOPDIR/bin/https/jre/lib/ext로 복사하는 것입니다.

> 또한, HTTPS 터널 서블릿을 배포하기 전에 키 저장소 파일의 위치를 가리키고 키 저장소 비밀번호를 지정하도록 배포 설명자를 수정해야 합니다.

> ##### HTTPS 터널 서블릿 WAR 파일을 수정하는 방법

> 1. WAR 파일을 임시 디렉토리로 복사합니다.

> cp /usr/share/lib/imq/imqhttps.war /tmp (Solaris)

> cp /opt/imq/lib/imqhttps.war /tmp (Linux)

> cp IMQ_HOME/lib/imqhttps.war /tmp (Windows)

> 2. 임시 디렉토리를 현재 디렉토리로 만듭니다.

> $ cd /tmp

> 3. WAR 파일의 내용을 추출합니다.

> $ jar xvf imqhttps.war

> 4. WAR 파일의 배포 설명자를 나열합니다.

> $ ls -l WEB-INF/web.xml

> 5. keystoreLocation과 keystorePassword 인수(필요한 경우 servletPort 및 servletHost 인수 포함)에 정확한 값을 제공하도록 web.xml 파일을 편집합니다.
> 6. WAR 파일의 내용을 다시 어셈블합니다.

> $ jar uvf imqhttps.war WEB-INF/web.xml

> 이제 수정된 imqhttps.war 파일을 사용하여 HTTPS 터널 서블릿을 배포할 수 있습니다. (키 저장소 비밀번호 노출이 우려되는 경우에는 파일 시스템 권한을 사용하여 imqhttps.war 파일에 대한 액세스를 제한할 수 있습니다.)

> ##### https 터널 서블릿을 WAR 파일로 배포하는 방법

> 1. 브라우저 기반 관리 GUI에서 가상 서버 클래스 탭을 선택합니다. 클래스 관리를 누릅니다.
> 2. 해당 가상 서버 클래스 이름(예: defaultClass)을 선택하고 관리 버튼을 누릅니다.
> 3. 가상 서버 관리를 선택합니다.
> 4. 해당 가상 서버 이름을 선택하고 관리 버튼을 누릅니다.
> 5. 웹 응용 프로그램 탭을 선택합니다.
> 6. 웹 응용 프로그램 배포를 누릅니다.
> 7. WAR 파일 위치와 WAR 파일 경로 필드에서 수정된 imqhttps.war 파일("HTTPS 터널 서블릿 WAR 파일을 수정하는 방법" 참조)을 가리키는 적절한 값을 선택합니다.
> 8. 응용 프로그램 URI 필드에 경로를 입력합니다.

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

> https://hostName:port/contextRoot/tunnel

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

> /imq

> 9. 서블릿을 배포할 설치 디렉토리 경로(일반적으로 Sun Java System Web Server 설치 루트 아래)를 입력합니다.
> 10. 확인을 누릅니다.
> 11. Web Server 인스턴스를 다시 시작합니다.

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

> https://hostName:port/imq/tunnel

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

> ### 예 4: Sun Java System Application Server 7.0에 HTTPS 터널 서블릿 배포

> 이 절에서는 Sun Java System Application Server 7.0에서 HTTPS 터널 서블릿을 WAR 파일로 배포하는 방법을 설명합니다.

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

> - Application Server 7.0 배포 도구를 사용하여 HTTPS 터널 서블릿 배포
> - Application Server 인스턴스의 server.policy 파일 수정

> #### 배포 도구 사용

> ##### Application Server 7.0 환경에 HTTPS 터널 서블릿을 배포하는 방법

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

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

> 2. 배포 버튼을 누릅니다.
> 3. 파일 경로 텍스트 필드에 HTTPS 터널 서블릿 WAR 파일(imqhttps.war)의 위치를 입력합니다.

> imqhttps.war 파일의 위치는 운영 체제에 따라 다릅니다(부록 A, "Message Queue 데이터의 위치" 참조).

> 4. 확인을 누릅니다.
> 5. 다음 화면에서 컨텍스트 루트 텍스트 필드의 값을 설정합니다.

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

> https://hostName:port/contextRoot/tunnel

> 예를 들어, 컨텍스트 루트 필드를 다음과 같이 설정할 수 있습니다.

> /imq

> 6. 확인을 누릅니다.

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

> /var/opt/SUNWappserver7/domains/domain1/server1/applications/
> j2ee-modules/imqhttps_1

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

> https://hostName:port/contextRoot/tunnel

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

> #### server.policy 파일 수정

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

> Application Server 인스턴스마다 해당 보안 정책이나 규칙이 포함된 파일이 있습니다. 예를 들어, Solaris의 server1 인스턴스의 경우 이 파일의 위치는 다음과 같습니다.

> /var/opt/SUNWappserver7/domains/domain1/server1/config/
> server.policy

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

> ##### Application Server의 server.policy 파일을 수정하는 방법

> 1. server.policy 파일을 엽니다.
> 2. 다음 항목을 추가합니다.

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

> 이전 목차 색인 다음

> Copyright 2004 Sun Microsystems, Inc. 모든 권리는 저작권자의 소유입니다.