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

在 Sun Java System Web Server 或 Sun Java System Application Server 上,可以将 HTTP 隧道 Servlet 作为 Web 归档 (Web archive, WAR) 文件进行部署。

要将 HTTP 隧道 Servlet 作为 .war 文件进行部署,需要使用 Web 服务器/应用服务器提供的部署机制。 HTTP 隧道 Servlet .war 文件 (imqhttp.war ) 位于包含 .jar .war.rar 文件的目录中,具体目录因操作系统而异(请参见附录 A, Message 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 中,选择“虚拟 Server 类”选项卡并选择“管理类”。

  2. 选择相应的虚拟服务器类名(例如, defaultClass)并单击“管理”按钮。

  3. 选择“管理虚拟服务器”。

  4. 选择相应的虚拟服务器名称并单击“管理”按钮。

  5. 选择“Web 应用程序”选项卡。

  6. 单击“部署 Web 应用程序”。

  7. 为“WAR 文件位置”和“WAR 文件路径”字段选择相应的值,以指向 imqhttp.war 文件,该文件所在的目录因操作系统而异(请参见附录 A, Message 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. 在基于 Web 的管理 GUI 中,选择

    “应用服务器”>“实例”> "server1" >“应用程序”>“Web 应用程序”。

  2. 单击“部署”按钮。

  3. 在“文件路径:”文本字段中,输入 HTTP 隧道 Servlet.war 文件 (imqhttp.war) 的位置,然后单击“确定”。

    imqhttp.war 文件的位置因操作系统而异(请参见附录 A, Message QueueTM 数据在特定平台上的位置)。

  4. 设置“上下文根”文本字段的值,然后单击“确定”。

    “上下文根”字段的值是隧道 Servlet URL 的 /contextRoot 部分:

    http:// hostName :portNumber / contextRoot/tunnel

    例如,可以将“上下文根”字段设置为 /imq

    显示的确认屏幕确认隧道 Servlet 已成功部署,在默认情况下处于启用状态,并且在本例中该 Servlet 位于以下位置:


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

    Servlet 现在即被部署到以下 URL:


    http://hostName:portNumber/
    contextRoot/tunnel

    客户端现在即可使用此 URL 通过 HTTP 连接来连接到消息服务。

修改 server.policy 文件

应用服务器实施了一组默认安全策略,除非经过修改,否则它们将阻止 HTTP 隧道 Servlet 接受来自 Message Queue 代理的连接。

每个应用服务器实例都有一个包含安全策略或规则的文件。例如,server1 实例的此文件在 Solaris 上的位置为:

/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) 进行标识(请参见附录 A, Message QueueTM 数据在特定平台上的位置):

    /instances/ instanceName /props/config.properties

  2. httpjms 值添加到 imq.service.activelist 属性中:


    imq.service.activelist=jms,admin,httpjms

    启动时,代理将查找 Web 服务器/应用服务器以及在其主机上运行的 HTTP 隧道 Servlet。但是,要访问远程隧道 Servlet,可以重新配置 servletHost servletPort 连接服务属性。

    此外,还可以重新配置 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 服务器/应用服务器上部署隧道 Servlet 时设置的路径。

有关连接工厂属性,特别是有关 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 选项来设置这些属性。