以下各節描述啟用 HTTP 支援所需的步驟。
您可以將 HTTP 通道 Servlet 部署為 Sun Java System Web Server 或 Sun Java System Application Server 上的 Web 歸檔 (.war) 檔案。
將 HTTP 通道 Servlet 部署為 .war 檔案,需要使用 Web 伺服器/應用程式伺服器所提供的部署機制。HTTP 通道 Servlet .war 檔案 (imqhttp.war ) 位於包含 .jar、 .war 和 .rar 檔案的目錄中,此目錄的位置會因作業系統而異 (請參閱附錄 AMessage QueueTM 資料的特定平台位置)。
.war 檔案包括部署描述元,而該描述元會包含 Web 伺服器/應用程式伺服器載入和執行 Servlet 所需之基本配置資訊。因 Web 伺服器/應用程式伺服器的不同,您也可能必須指定 Servlet URL 的環境根目錄部分。
部署為 Web 歸檔檔案
如需在 Sun Java System Web Server 上進行部署的相關資訊,請參閱在 Sun Java System Web Server 上部署 HTTP 通道 Servlet。
如需在 Sun Java System Application Server 上進行部署的相關資訊,請參閱在 Sun Java System Application Server 上部署 HTTP 通道 Servlet。
以下說明是在 Sun Java System Web Server 上的部署。您可以透過使用 Web 瀏覽器存取 Servlet URL,來驗證 HTTP 通道 Servlet 是否已部署成功。它應顯示狀態資訊。
在瀏覽器型的管理 GUI 中,選擇 [虛擬伺服器類別] 標籤,然後選擇 [管理類別]。
選擇適當的虛擬伺服器類別名稱 (例如 defaultClass),然後按一下 [管理] 按鈕。
選擇 [管理虛擬伺服器]。
選取適當的虛擬伺服器名稱,然後按一下 [管理] 按鈕。
選擇 [Web 應用程式] 標籤。
按一下 [部署 Web 應用程式]。
為 [WAR 檔案開啟] 和 [WAR 檔案路徑] 欄位選擇適當的值,讓其指向 imqhttp.war 檔案,您可以在某個目錄 (目錄位置因作業系統而異) 中找到此檔案 (請參閱附錄 AMessage QueueTM 資料的特定平台位置)。
在 [應用程式 URI] 欄位中輸入路徑。
[應用程式 URI] 欄位值為通道 Servlet URL 的 /contextRoot 部分:
http://hostName :portNumber / contextRoot/tunnel
舉例來說,如果您將 contextRoot 設定至 imq,則 [應用程式 URI] 欄位應為:
/imq
輸入應部署 Servlet 的安裝目錄路徑 (通常位於 Sun Java System Web Server 安裝根目錄下)。
按一下 [確定]。
重新啟動 Web 伺服器實例。
此時,即可從以下位址存取 Servlet:
http://hostName:portNumber/ contextRoot/tunnel |
現在,用戶端就可以使用此 URL 連線至使用 HTTP 連線的訊息服務。
您不必停用伺服器存取記錄,但是如果您停用記錄,將會獲得更好的效能。
本節描述如何在 Sun Java System Application Server 上將 HTTP 通道 Servlet 部署為 .war 檔案,接著再配置通道 Servlet,以便接受來自 Message Queue 代理程式的連線。
您需要執行下列兩個步驟:
使用應用程式伺服器部署工具來部署 HTTP 通道 Servlet。
修改應用程式伺服器實例的 server.policy 檔案。
在網路型的管理 GUI 中,選擇
[應用程式伺服器] > [實例] > [server1] > [應用程式] > [Web 應用程式]
按一下 [部署] 按鈕。
在 [檔案路徑:] 文字欄位輸入 HTTP 通道 Servlet .war 檔案 (imqhttp.war) 的位置,再按一下 [確定]。
imqhttp.war 檔案的位置會因您的作業系統而異 (請參閱附錄 AMessage QueueTM 資料的特定平台位置)。
設定 [環境根目錄] 文字欄位的值,再按一下 [確定]。
[環境根目錄] 欄位值為通道 Servlet URL 的 /contextRoot 部分:
http:// hostName :portNumber / contextRoot/tunnel
例如,您可以將 [環境根目錄] 欄位設定為 /imq。
此時會出現一個確認畫面,確認通道 Servlet 已成功部署並且依預設已啟用,以及該通道 Servlet 的位置。在本例中其位置如下:
/var/opt/SUNWappserver8/domains/domain1/server1/applications/ j2ee-modules/imqhttp_1 |
此時,即可從以下 URL 存取 Servlet:
http://hostName:portNumber/ contextRoot/tunnel |
現在,用戶端就可以使用此 URL 連線至使用 HTTP 連線的訊息服務。
應用程式伺服器會實施一組預設的安全策略,除非將其修改,否則這組安全策略會阻止 HTTP 通道 Servlet 接受來自 Message Queue 代理程式的連線。
每個應用程式伺服器實例,皆有一個包含其安全策略或規則的檔案。例如在 Solaris 上,server1 實例的此檔案位置是:
/var/opt/SUNWappserver8/domains/domain1/server1/config/ server.policy
若要配置通道 Servlet 接受來自 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) 相同 (請參閱附錄 AMessage QueueTM 資料的特定平台位置):
…/instances/ instanceName /props/config.properties
將 httpjms 值增加至 imq.service.activelist 特性:
imq.service.activelist=jms,admin,httpjms |
啟動時,代理程式會尋找在其主機電腦上執行的 Web 伺服器/應用程式伺服器和 HTTP 通道 Servlet。但是,若要存取遠端通道 Servlet,您可以重新配置 servletHost 和 servletPort 連線服務特性。
您還可以重新配置 pullPeriod 特性,以提昇效能。步驟 2. 配置 httpjms 連線服務中詳細介紹了 httpjms 連線服務配置特性。
用戶端應用程式必須使用已適當配置的連線工廠受管理物件,以建立與代理程式的 HTTP 連線。本節說明 HTTP 連線配置問題。
若要啟用 HTTP 支援,您必須將連線工廠的 imqAddressList 屬性設定為 HTTP 通道 Servlet URL。HTTP 通道 Servlet URL 的一般語法如下:
http://hostName:portNumber /contextRoot/tunnel
其中 hostName:portNumber 為託管 HTTP 通道 Servlet 之 Web 伺服器/應用程式伺服器的名稱和連接埠;contextRoot 為在 Web 伺服器/應用程式伺服器上部署通道的路徑設定。
如需連線工廠屬性的一般資訊與 imqAddressList 屬性的特定資訊,請參閱「Message Queue Developer's Guide for Java Clients」。
您可以透過以下方法之一設定連線工廠屬性:
使用可建立連線工廠受管理物件 (請參閱新增連線工廠) 之 imqobjmgr 指令的 -o 選項,或在使用管理主控台 (imqadmin) 建立連線工廠受管理物件時設定屬性。
使用可啟動用戶端之指令的 -D 選項 (請參閱「Message Queue Developer's Guide for Java Clients」)。
當您透過程式設計由用戶端程式碼建立連線工廠後,請使用 API 呼叫以設定屬性 (請參閱「Message Queue Developer's Guide for Java Clients」)。
若要執行多個代理程式,您無需配置多個 Web 伺服器/應用程式伺服器和 Servlet 實例。您可以讓同時執行的代理程式,共用單一 Web 伺服器/應用程式伺服器和 HTTP 通道 Servlet 實例。如果多個代理程式實例共用一個通道 Servlet,您必須配置 imqAddressList 連線工廠屬性,配置內容如下:
http://hostName:portNumber /contextRoot/tunnel?ServerName= bkrHostName:instanceName
其中 bkrHostName 為代理程式實例主機名稱;instanceName 為用戶端所要存取的特定代理程式實例名稱。
若要檢查您為 bkrHostName 和 instanceName 輸入的字串是否正確,請從瀏覽器存取 Servlet URL,並產生 HTTP 通道 Servlet 的狀態報告。此報告將列出 Servlet 所存取的所有代理程式:
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 通道 Servlet:
將 http.proxyHost 系統特性設定為代理伺服器主機名稱。
將 http.proxyPort 系統特性設定為代理伺服器連接埠號。
您可以使用可啟動用戶端應用程式之指令的 -D 選項來設定這些特性。