다음 절에서는 HTTP 지원을 활성화하기 위해 수행하는 단계를 설명합니다.
HTTP 터널 서블릿을 배포합니다. 다음 서버에 HTTP 터널 서블릿을 배포할 수 있습니다.
브로커의 httpjms 연결 서비스를 구성하고 브로커를 시작합니다.
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에 배포 시의 참조 지침입니다. 웹 브라우저를 사용하여 서블릿 URL에 액세스함으로써 HTTP 터널 서블릿 배포 성공 여부를 확인할 수 있습니다. 상태 정보를 표시해야 합니다.
브라우저 기반 관리 GUI에서 가상 서버 클래스 탭을 선택한 후 클래스 관리를 선택합니다.
해당 가상 서버 클래스 이름(예: defaultClass)을 선택하고 관리 버튼을 누릅니다.
가상 서버 관리를 선택합니다.
해당 가상 서버 이름을 선택하고 관리 버튼을 누릅니다.
웹 응용 프로그램 탭을 선택합니다.
웹 응용 프로그램 배포를 누릅니다.
WAR 파일 위치와 WAR 파일 경로 필드에서 imqhttp.war 파일을 가리키는 적절한 값을 선택합니다. 이 파일이 있는 디렉토리는 운영 체제에 따라 다릅니다(부록 A, 플랫폼별 Message QueueTM 데이터 위치 참조).
응용 프로그램 URI 필드에 경로를 입력합니다.
응용 프로그램 URI 필드 값은 다음 터널 서블릿 URL의 /contextRoot 부분입니다.
http://hostName :portNumber / contextRoot/tunnel
예를 들어, contextRoot를 imq로 설정한 경우 응용 프로그램 URI 필드는 다음과 같습니다.
/imq
서블릿을 배포할 설치 디렉토리 경로(일반적으로 Sun Java System Web Server 설치 루트 아래)를 입력합니다.
확인을 누릅니다.
웹 서버 인스턴스를 다시 시작합니다.
이제 서블릿을 다음 주소에서 사용할 수 있습니다.
http://hostName:portNumber/ contextRoot/tunnel |
이제 클라이언트에서 이 URL을 통해 HTTP 연결을 사용하는 메시지 서비스에 연결할 수 있습니다.
서버 액세스 로그를 비활성화할 필요는 없지만 그렇게 하면 성능이 향상됩니다.
이 절에서는 HTTP 터널 서블릿을 Sun Java System Application Server에 .war 파일로 배포한 다음 Sun Java System 브로커에서 연결을 수신하도록 터널 서블릿을 구성하는 방법에 대해 설명합니다.
다음 두 단계를 거쳐야 합니다.
Application Server 배포 도구를 사용하여 HTTP 터널 서블릿 배포
응용 프로그램 서버 인스턴스의 server.policy 파일 수정
웹 기반 관리 GUI에서 다음을 선택합니다.
App Server > 인스턴스 > server1 > 응용 프로그램 > 웹 응용 프로그램
배포 버튼을 누릅니다.
파일 경로: 텍스트 필드에 HTTP 터널 서블릿 .war 파일(imqhttp.war)의 위치를 입력한 다음 확인을 누릅니다.
imqhttp.war 파일의 위치는 운영 체제에 따라 다릅니다(부록 A, 플랫폼별 Message QueueTM 데이터 위치 참조).
컨텍스트 루트 필드의 값을 설정하고 확인을 누릅니다.
컨텍스트 루트 필드 값은 터널 서블릿 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 연결을 사용하는 메시지 서비스에 연결할 수 있습니다.
Application Server에서 시행하는 일련의 기본 보안 정책은 수정하지 않으면 HTTP 터널 서블릿이 Message Queue 브로커에서 연결을 수신할 수 없도록 합니다.
응용 프로그램 서버 인스턴스마다 해당 보안 정책이나 규칙이 포함된 파일이 있습니다. 예를 들어, Solaris의 server1 인스턴스의 경우 이 파일의 위치는 다음과 같습니다.
/var/opt/SUNWappserver8/domains/domain1/server1/config/ server.policy
터널 서블릿이 Message Queue 브로커에서 연결을 수신하도록 구성하려면 이 파일에 항목을 추가해야 합니다.
server.policy 파일을 엽니다.
다음 항목을 추가합니다.
grant codeBase "file:/var/opt/SUNWappserver8/domains/domain1/server1/ applications/j2ee-modules/imqhttp_1/-” { permission java.net.SocketPermission "*", "connect,accept,resolve"; }; |
기본적으로 브로커에 대해 HTTP 지원이 활성화되어 있지 않으므로 httpjms 연결 서비스가 활성화되도록 브로커를 재구성해야 합니다. 재구성한 경우 브로커 시작에 설명된 대로 브로커를 시작할 수 있습니다.
브로커의 인스턴스 구성 파일을 엽니다.
인스턴스 구성 파일은 구성 파일이 연결되어 있는 브로커 인스턴스의 이름(instanceName)으로 식별되는 디렉토리에 저장됩니다(부록 A, 플랫폼별 Message QueueTM 데이터 위치 참조).
…/instances/ instanceName /props/config.properties
imq.service.activelist 등록 정보에 httpjms 값을 추가합니다.
imq.service.activelist=jms,admin,httpjms |
브로커는 시작할 때 호스트 시스템에서 실행 중인 웹 서버/응용 프로그램 서버와 HTTP 터널 서블릿을 찾습니다. 그러나 원격 터널 서블릿에 액세스하기 위해 servletHost 및 servletPort 연결 서비스 등록 정보를 재구성할 수 있습니다.
또한 성능 향상을 위해 pullPeriod 등록 정보를 재구성할 수도 있습니다. httpjms 연결 서비스 구성 등록 정보에 대한 자세한 내용은 2단계. httpjms 연결 서비스 구성을 참조하십시오.
클라이언트 응용 프로그램에서는 제대로 구성된 연결 팩토리 관리 객체를 사용해서 브로커에 대한 HTTP 연결을 설정해야 합니다. 이 절에서는 HTTP 연결 구성 문제에 대해 논의합니다.
HTTP 지원을 활성화하려면 연결 팩토리의 imqAddressList 속성을 HTTP 터널 서블릿 URL로 설정해야 합니다. HTTP 터널 서블릿 URL의 일반 구문은 다음과 같습니다.
http://hostName:portNumber /contextRoot/tunnel
여기서 hostName:portNumber는 HTTP 터널 서블릿을 호스트하는 웹 서버/응용 프로그램 서버의 이름과 포트이며, contextRoot는 웹 서버/응용 프로그램 서버에서 터널 서블릿을 배포할 때 설정된 경로입니다.
일반적인 연결 팩토리 속성, 특히 imqAddressList 속성에 대한 자세한 내용은 Java 클라이언트용 Message Queue 개발 안내서를 참조하십시오.
다음 방법 중 하나를 사용하여 연결 팩토리 속성을 설정할 수 있습니다.
연결 팩토리 관리 대상 객체를 만드는 imqobjmgr 명령에 -o 옵션을 사용하거나( 연결 팩토리 추가 참조) 관리 콘솔(imqadmin)을 사용하여 연결 팩토리 관리 대상 객체를 만들 때 속성을 설정합니다.
클라이언트를 시작하는 명령에 -D 옵션을 사용합니다(Java 클라이언트용 Message Queue 개발 안내서 참조).
클라이언트 코드에서 프로그래밍 방식으로 연결 팩토리를 만든 후 API 호출을 사용하여 해당 연결 팩토리의 속성을 설정합니다(Java 클라이언트용 Message Queue 개발 안내서 참조).
다중 브로커를 실행할 경우 다중 웹 서버/응용 프로그램 서버 및 서블릿 인스턴스를 구성하지 않아도 됩니다. 동시에 실행 중인 브로커 간에 단일 웹 서버/응용 프로그램 서버와 HTTP 터널 서블릿 인스턴스를 공유할 수 있습니다. 다중 브로커 인스턴스가 단일 터널 서블릿을 공유하는 경우 imqAddressList 연결 팩토리 속성을 다음과 같이 구성해야 합니다.
http://hostName:portNumber /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 2005 Accepting TCP connections from brokers on port : 7675 Total available brokers = 2 Broker List : jpgserv:broker2 cochin:broker1 |
HTTP 프록시를 사용해서 HTTP 터널 서블릿에 액세스하는 경우
http.proxyHost 시스템 등록 정보를 프록시 서버 호스트 이름으로 설정합니다.
http.proxyPort 시스템 등록 정보를 프록시 서버 포트 번호로 설정합니다.
클라이언트 응용 프로그램을 시작하는 명령에 -D 옵션을 사용하여 이러한 등록 정보를 설정할 수 있습니다.