Sun Java System Message Queue 3.7 UR1 管理指南

啟用 HTTP 支援

以下各節描述啟用 HTTP 支援所需的步驟。

Procedure啟用 HTTP 支援

  1. 部署 HTTP 通道 Servlet。您可以在下列伺服器上部署 HTTP 通道 Servlet:

    • Sun Java SystemTM Web Server

      • Sun Java System Application Server

  2. 配置代理程式的 httpjms 連線服務,並啟動代理程式。

  3. 配置 HTTP 連線。

步驟 1. 部署 HTTP 通道 Servlet

您可以將 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 上部署 HTTP 通道 Servlet

以下說明是在 Sun Java System Web Server 上的部署。您可以透過使用 Web 瀏覽器存取 Servlet URL,來驗證 HTTP 通道 Servlet 是否已部署成功。它應顯示狀態資訊。

Procedure將 HTTP 通道 Servlet 部署為 .war 檔案

  1. 在瀏覽器型的管理 GUI 中,選擇 [虛擬伺服器類別] 標籤,然後選擇 [管理類別]。

  2. 選擇適當的虛擬伺服器類別名稱 (例如 defaultClass),然後按一下 [管理] 按鈕。

  3. 選擇 [管理虛擬伺服器]。

  4. 選取適當的虛擬伺服器名稱,然後按一下 [管理] 按鈕。

  5. 選擇 [Web 應用程式] 標籤。

  6. 按一下 [部署 Web 應用程式]。

  7. 為 [WAR 檔案開啟] 和 [WAR 檔案路徑] 欄位選擇適當的值,讓其指向 imqhttp.war 檔案,您可以在某個目錄 (目錄位置因作業系統而異) 中找到此檔案 (請參閱附錄 AMessage QueueTM 資料的特定平台位置)。

  8. 在 [應用程式 URI] 欄位中輸入路徑。

    [應用程式 URI] 欄位值為通道 Servlet URL 的 /contextRoot 部分:

    http://hostName :portNumber / contextRoot/tunnel

    舉例來說,如果您將 contextRoot 設定至 imq,則 [應用程式 URI] 欄位應為:

    /imq

  9. 輸入應部署 Servlet 的安裝目錄路徑 (通常位於 Sun Java System Web Server 安裝根目錄下)。

  10. 按一下 [確定]。

  11. 重新啟動 Web 伺服器實例。

    此時,即可從以下位址存取 Servlet:


    http://hostName:portNumber/
    contextRoot/tunnel

    現在,用戶端就可以使用此 URL 連線至使用 HTTP 連線的訊息服務。

停用伺服器存取記錄

您不必停用伺服器存取記錄,但是如果您停用記錄,將會獲得更好的效能。

Procedure停用伺服器存取記錄

  1. 選擇 [狀態] 標籤。

  2. 選擇 [記錄喜好設定頁面]。

    使用記錄用戶端存取控制來停用記錄。

在 Sun Java System Application Server 上部署 HTTP 通道 Servlet

本節描述如何在 Sun Java System Application Server 上將 HTTP 通道 Servlet 部署為 .war 檔案,接著再配置通道 Servlet,以便接受來自 Message Queue 代理程式的連線。

您需要執行下列兩個步驟:

使用部署工具

Procedure在應用程式伺服器環境中部署 HTTP 通道 Servlet

  1. 在網路型的管理 GUI 中,選擇

    [應用程式伺服器] > [實例] > [server1] > [應用程式] > [Web 應用程式]

  2. 按一下 [部署] 按鈕。

  3. 在 [檔案路徑:] 文字欄位輸入 HTTP 通道 Servlet .war 檔案 (imqhttp.war) 的位置,再按一下 [確定]。

    imqhttp.war 檔案的位置會因您的作業系統而異 (請參閱附錄 AMessage QueueTM 資料的特定平台位置)。

  4. 設定 [環境根目錄] 文字欄位的值,再按一下 [確定]。

    [環境根目錄] 欄位值為通道 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 連線的訊息服務。

修改 server.policy 檔案

應用程式伺服器會實施一組預設的安全策略,除非將其修改,否則這組安全策略會阻止 HTTP 通道 Servlet 接受來自 Message Queue 代理程式的連線。

每個應用程式伺服器實例,皆有一個包含其安全策略或規則的檔案。例如在 Solaris 上,server1 實例的此檔案位置是:

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

若要配置通道 Servlet 接受來自 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 連線服務。重新配置後,便可如啟動代理程式中所述啟動代理程式。

Procedure啟動 httpjms 連線服務

  1. 開啟代理程式的實例配置檔案。

    實例配置檔案的儲存目錄名稱,與此配置檔案相關聯之代理程式實例名稱 (instanceName) 相同 (請參閱附錄 AMessage QueueTM 資料的特定平台位置):

    /instances/ instanceName /props/config.properties

  2. httpjms 值增加至 imq.service.activelist 特性:


    imq.service.activelist=jms,admin,httpjms

    啟動時,代理程式會尋找在其主機電腦上執行的 Web 伺服器/應用程式伺服器和 HTTP 通道 Servlet。但是,若要存取遠端通道 Servlet,您可以重新配置 servletHostservletPort 連線服務特性。

    您還可以重新配置 pullPeriod 特性,以提昇效能。步驟 2. 配置 httpjms 連線服務中詳細介紹了 httpjms 連線服務配置特性。

    特性 

    說明 

    imq.httpjms.http.servletHost

    如有必要,請變更此值以指定執行 HTTP 通道 Servlet 的主機之名稱 (主機名稱或 IP 位址)。(可以是遠端主機,或本地主機上的特定主機名稱。)預設值:localhost

    imq.httpjms.http. servletPort

    變更此值,以指定代理程式用於存取 HTTP 通道 Servlet 的連接埠號。(如果 Web 伺服器上的預設連接埠已變更,則您必須相應地變更此特性。)預設值:7675

    imq.httpjms.http. pullPeriod

    指定用戶端執行階段發出從代理程式取出訊息之 HTTP 請求的時間間隔 (以秒為單位)。(請注意,此特性於代理程式上進行設定,並傳播至用戶端執行階段。)如果值為零或負數,則用戶端將始終擱置一個 HTTP 請求,以便隨時做好準備從而儘快取出訊息。若用戶端數目過大,可能會導致耗用大量的 Web 伺服器/應用程式伺服器資源,造成伺服器無法回應。在此類情況下,您應將 pullPeriod 特性設定為正的秒數。此特性設定用戶端的 HTTP 傳輸驅動程式在發出後續取出請求之前,所需等待的時間。將此值設定為正數可節省 Web 伺服器/應用程式伺服器資源,但會影響用戶端所監視的回應次數。預設值:-1

    imq.httpjms.http. connectionTimeout

    指定丟出異常之前,用戶端執行階段等待來自 HTTP 通道 Servlet 之回應的時間 (以秒為單位)。(請注意,此特性於代理程式上進行設定,並傳播至用戶端執行階段。)此特性也會指定代理程式與 HTTP 通道 Servlet 進行通訊後,需等待多長時間後才釋放連線。因為在此情況下,代理程式與通道 Servlet 無法得知存取 HTTP Servlet 的用戶端是否已異常中斷,因此必須設定逾時時間。預設值:60

步驟 3. 配置 HTTP 連線

用戶端應用程式必須使用已適當配置的連線工廠受管理物件,以建立與代理程式的 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」。

您可以透過以下方法之一設定連線工廠屬性:

使用單一 Servlet 存取多重代理程式

若要執行多個代理程式,您無需配置多個 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 代理伺服器存取 HTTP 通道 Servlet:

您可以使用可啟動用戶端應用程式之指令的 -D 選項來設定這些特性。