![]() |
Sun ONE Message Queue, Version 3.0.1 管理员指南 |
Sun ONE Message Queue (MQ) Enterprise Edition(请参阅产品版本)支持 HTTP 和 HTTPS 连接。(HTTPS 连接使用安全套接字层标准,比 HTTP 连接更安全。)此支持使客户机应用程序可以使用 HTTP 协议(而不是直接 TCP 连接)与代理进行通信。本附录介绍了实现此支持所使用的体系结构,并说明了如何设置客户机,使之能够使用基于 HTTP 的连接进行 MQ 消息传送。
HTTP/HTTPS 支持体系结构
可以通过 HTTP/HTTPS 连接进行 MQ 消息传送。因为 HTTP/HTTPS 连接通常可以穿过防火墙,因此可以通过防火墙将客户机应用程序与代理分隔开。
图 B-1 列出了提供 HTTP/HTTPS 支持所需的主要组件。
- 在客户端,HTTP 传输驱动程序将 MQ 消息封装到 HTTP 请求中,并确保将这些请求以正确的顺序发送给 Web 服务器。
- 必要时,JMS 客户机可以使用 HTTP 代理服务器与代理进行通信。可以在启动客户机时使用命令行选项指定代理的地址。有关详细信息,请参阅使用 HTTP 代理。
- 将 JMS 消息转发给代理之前,需要将 HTTP 或 HTTPS 隧道 Servlet(均随 MQ 一起提供)装入 Web 服务器,并使用它们从客户机 HTTP 请求中提取 JMS 消息。HTTP/HTTPS 隧道 Servlet 还将代理消息发送回客户机,以响应客户机发出的 HTTP 请求。可以使用一个 HTTP/HTTPS 隧道 Servlet 访问多个代理。
图 B-1    HTTP/HTTPS 支持体系结构
![]()
- 在代理端,httpjms 或 httpsjms 连接服务对来自相应隧道 Servlet 的消息进行展开和分离。
- 如果 Web 服务器失败并重新启动,所有连接都将恢复且不会对客户机产生影响。如果代理失败并重新启动,将抛出异常,而客户机必须重新建立连接。如果 Web 服务器和代理同时失败(这种情况不太可能发生)而代理没有重新启动,Web 服务器将恢复客户机连接并等待代理恢复连接而不会通知客户机。要避免这种情况,应始终重新启动代理。
从图 B-1 可以看出,HTTP 和 HTTPS 支持所需的体系结构非常相似。主要区别在于,HTTPS(httpsjms 连接服务)中的隧道 Servlet 与客户机应用程序和代理之间的连接都是安全的。
与代理之间的安全连接是通过支持 SSL 的隧道 Servlet(MQ 的 HTTPS 隧道 Servlet)提供的,该 Servlet 会向请求连接的任何代理发送自签名证书。代理使用该证书建立与 HTTPS 隧道 Servlet 的加密连接。建立此连接后,客户机应用程序和 Web 服务器可以协商建立客户机应用程序和隧道 Servlet 之间的安全连接。
实现 HTTP 支持
以下各节介绍了实现 HTTP 支持所需执行的步骤。
实现 HTTP 支持的步骤
- 在 Web 服务器上部署 HTTP 隧道 Servlet。
- 配置代理的 httpjms 连接服务并启动代理。
- 配置 HTTP 连接。
步骤 1:在 Web 服务器上部署 HTTP 隧道 Servlet
在 Web 服务器上部署 HTTP 隧道 Servlet 的常见方法有两种:
- 将其部署为支持 Servlet 2.1 或更早版本的 Web 服务器 Jar 文件
- 将其部署为支持 Servlet 2.2 或更新版本的 Web 服务器 Web 归档 (WAR) 文件
部署为 Jar 文件
部署 MQ 隧道 Servlet 包括两个步骤,首先要使主机 Web 服务器可以访问相应的 Jar 文件,然后要对该 Web 服务器进行配置,使之在启动时装入该 Servlet。
隧道 Servlet Jar 文件 (imqServlet.jar) 包含 HTTP 隧道 Servlet 所需的所有类,该文件位于以下目录中:
IMQ_HOME/lib(在 Solaris 操作系统上为 /usr/share/lib/imq)
可以使用任何支持 Servlet 2.x 的 Web 服务器装入此 Servlet。Servlet 类名为:
com.sun.messaging.jmq.transport.
httptunnel.servlet.HttpTunnelServletWeb 服务器必须能够访问 imqservlet.jar 文件。如果计划在不同的主机上运行 Web 服务器和代理,应该在 Web 服务器能够访问的位置放置 imqservlet.jar 文件的一个副本。
还需要配置 Web 服务器,使之在启动时装入此 Servlet(请参阅实例:部署 HTTP 隧道 Servlet)。
同时建议您禁用 Web 服务器的访问日志功能以提高性能。
部署为 Web 归档文件
要将 HTTP 隧道 Servlet 部署为 WAR 文件,需要使用 Web 服务器提供的部署机制。HTTP 隧道 Servlet WAR 文件 (imqhttp.war) 位于以下目录中:
IMQ_HOME/lib(在 Solaris 操作系统上为 /usr/share/lib/imq)
WAR 文件包含一个部署描述符,该描述符包含 Web 服务器装入和运行 Servlet 所需的基本配置信息。
步骤 2:配置 httpjms 连接服务
默认情况下,MQ 3.0.1 代理没有启用 HTTP 支持,因此需要重新配置代理以启用 httpjms 连接服务。重新配置后,可以按照启动代理中介绍的步骤启动代理。
启用 httpjms 连接服务的步骤
- 打开位于以下位置的代理实例配置文件:
IMQ_VARHOME/instances/brokerName/props/config.properties
(在 Solaris 操作系统上为 /var/imq/instances/brokerName/props/config.properties)其中 brokerName 是代理实例的名称。
- 将 httpjms 值添加到 imq.service.activelist 属性中:
imq.service.activelist=jms,admin,httpjms
启动时,代理将在其主机上查找运行的 Web 服务器和 HTTP 隧道 Servlet。但是要访问远程隧道 Servlet,需要重新配置 servletHost 和 servletPort 连接服务属性。
还可以重新配置 pullPeriod 属性以提高性能。表 B-1 详细介绍了 httpjms 连接服务配置属性。
步骤 3:配置 HTTP 连接
客户机应用程序必须使用正确配置的连接工厂被管理对象,建立与代理之间的 HTTP 连接。本节介绍 HTTP 连接配置问题。
设置连接工厂属性
要实现 HTTP 支持,需要设置以下连接工厂属性(请参阅连接工厂被管理对象):
- 将 imqConnectionType 属性设置为 HTTP
- 将 imqConnectionURL 设置为 HTTP 隧道 Servlet URL
http://hostName:port/imq/tunnel
可以按照以下方法之一设置连接工厂属性:
- 在创建连接工厂被管理对象(请参阅添加连接工厂)的 imqobjmgr 命令中使用 -o 选项,或在使用管理控制台 (imqadmin) 创建连接工厂时设置属性。
- 在启动客户机应用程序的命令中使用 -D 选项(请参阅《MQ 开发者指南》)。
- 通过编程方式在客户机应用程序代码中创建被管理对象(请参阅《MQ 开发者指南》)之后,使用 JMS API 调用设置其属性。
使用一个 Servlet 访问多个代理
即使正在运行多个代理,也无需配置多个 Web 服务器和多个 Servlet 实例。可以在并行运行的多个代理之间共享一个 Web 服务器和一个 HTTP 隧道 Servlet 实例。要实现此目的,必须按照如下所示配置 imqConnectionURL 连接工厂属性:
http://hostName:port/imq/tunnel?ServerName=hostName:brokerName
其中 hostName 为代理主机名,brokerName 是您希望客户机访问的特定代理实例的名称。
要查看是否输入了正确的 hostName 和 brokerName,可以通过浏览器访问 Servlet URL,生成 HTTP 隧道 Servlet 的状态报告。状态报告将列出 Servlet 正在访问的所有代理:
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 隧道 Servlet:
- 将 http.proxyHost 系统属性设置为代理服务器主机名。
- 将 http.proxyPort 系统属性设置为代理服务器端口号。
可以通过在启动客户机应用程序的命令中使用 -D 选项来设置这些属性。
实例:部署 HTTP 隧道 Servlet
本节说明如何在 Sun ONE Web Server 上将 HTTP 隧道 Servlet 部署为 Jar 文件和 WAR 文件。使用的方法取决于 Sun ONE Web Server 的版本:如果 Sun ONE Web Server 不支持 Servlet 2.2 或更新版本,则不能处理 WAR 文件部署。
部署为 Jar 文件
下面的说明适用于使用基于浏览器的管理 GUI 在 Sun ONE Web Server FastTrack Edition 4.1 上部署 HTTP 隧道 Servlet 的情况。此过程包含以下通用步骤:
- 添加 Servlet
- 配置 Servlet 虚拟路径
- 装入 Servlet
- 禁用 Servlet 访问日志
以下小节对这些步骤进行了说明。通过使用 Web 浏览器访问 Servlet URL 可以验证是否成功部署了 HTTP 隧道 Servlet。它应该
显示状态信息。添加 Servlet
添加隧道 Servlet 的步骤
- 选择“Servlets”选项卡。
- 选择“Configure Servlet Attribute”。
- 在“Servlet Name”字段中指定隧道 Servlet 的名称。
- 将“Servlet Code”(类名)字段设置为以下值:
com.sun.messaging.jmq.transport.
httptunnel.servlet.HttpTunnelServlet
- 在“Servlet Classpath”字段中输入 imqservlet.jar 的完整路径。例如:
IMQ_HOME/lib/imqservlet.jar
(在 Solaris 操作系统上为 /usr/share/lib/imq/imqservlet.jar)
- 在“Servlet args”字段中输入可选参数,如表 B-2 所示:
表 B-2    用于部署 HTTP 隧道 Servlet Jar 文件的 Servlet 参数
参数
默认值
参阅
servletHost
所有主机
请参阅表 B-1
servletPort
7675
请参阅表 B-1
如果使用两个参数,请使用逗号分隔:
servletPort=portnumber, servletHost=...
serverHost 和 serverPort 参数仅应用于 Web 服务器和代理之间的通信,仅当默认值存在问题时才需要进行设置。但是,在这种情况下,还必须相应地设置代理配置属性(请参阅表 B-1),例如:
imq.httpjms.http.servletPort
配置 Servlet 虚拟路径 (Servlet URL)
配置隧道 Servlet 虚拟路径 (Servlet URL) 的步骤
- 选择“Servlets”选项卡。
- 选择“Configure Servlet Virtual Path Translation”。
- 设置“Virtual Path”字段。
例如,要使 URL 类似 http://hostName:port/imq/tunnel,请在“Virtual Path”字段中输入以下字符串:
/imq/tunnel
- 设置“Servlet Name”字段的值,使之与添加 Servlet 中的步骤 3 中设置的值相同。
装入 Servlet
在 Web 服务器启动时装入隧道 Servlet 的步骤
- 选择“Servlets”选项卡。
- 选择“Configure Global Attributes”。
- 在“Startup Servlets”字段中输入与添加 Servlet 中的步骤 3 中的值相同的 Servlet 名称值。
禁用服务器访问日志
不是必须禁用服务器访问日志,但禁用服务器访问日志可以获得更好的性能。
禁用服务器访问日志的步骤
- 选择“Status”选项卡。
- 选择“Log Preferences Page”。
- 使用“Log”客户机访问控制禁用日志。
部署为 WAR 文件
下面的说明适用于在 Sun ONE Web Server 6.0 SP2 上的部署。通过使用 Web 浏览器访问 Servlet URL 可以验证是否成功部署了 HTTP 隧道 Servlet。它应该显示状态信息。
将 HTTP 隧道 Servlet 部署为 WAR 文件的步骤
- 在基于浏览器的管理 GUI 中,选择“Virtual Server Class”选项卡并选择“Manage Classes”。
- 选择相应的虚拟服务器类名(例如 defaultclass)并单击“Manage”按钮。
- 选择“Manage Virtual Servers”。
- 选择相应的虚拟服务器名称并单击“Manage”按钮。
- 选择“Web Applications”选项卡。
- 在“Deploy Web Application”上单击。
- 为“WAR File On”和“WAR File Path”字段选择相应的值,以指向 imqhttp.war 文件。该文件位于以下目录中:
IMQ_HOME/lib(在 Solaris 操作系统上为 /usr/share/lib/imq)
- 在“Application URI”字段中输入 /imq。
- 输入要在其中部署 Servlet 的安装目录路径(通常位于 Sun ONE Web Server 的安装根目录下)。
- 单击“OK”。
- 重新启动 Web 服务器实例。
Servlet 现在即被部署到以下位置:
http://hostName:port/imq/tunnel
客户机现在即可使用此 URL 连接至使用 HTTP 连接的消息服务。
实现 HTTPS 支持
以下各节说明实现 HTTPS 支持所需执行的操作。所需操作与实现 HTTP 支持中的操作类似,只是增加了生成和访问 SSL 证书的步骤。
实现 HTTPS 支持的步骤
- 为 HTTPS 隧道 Servlet 生成自签名证书。
- 在 Web 服务器上部署 HTTPS 隧道 Servlet。
- 配置代理的 httpjms 连接服务并启动代理。
- 配置 HTTPS 连接。
下文详细介绍了每个步骤。
步骤 1:为 HTTPS 隧道 Servlet 生成自签名证书
MQ 3.0.1 中的 SSL 支持用于保护所传输数据的安全,假定客户机正在与已知且可信任的服务器进行通信。因此,在 MQ 3.0.1 中,仅使用自签名的服务器证书实现 SSL。在 httpsjms 连接服务体系结构中,HTTPS 隧道 Servlet 充当代理和应用程序客户机的服务器。
运行 imqkeytool 实用程序,为隧道 Servlet 生成自签名证书。在命令提示符下输入以下内容:
imqkeytool -servlet keystore_location
命令行实用程序会提示您提供所需的信息。(在 Unix 操作系统上,可能需要以超级用户 [root 用户] 身份运行 imqkeytool 命令,以获得创建键存储所需的权限。)
首先,imqkeytool 会提示您输入键存储密码,然后提示您输入组织信息,最后提示您进行确认。收到您的确认后,它将在生成键对时暂停。然后它要求您输入密码以锁定特定密钥字对(密钥密码),此时请按回车键响应此提示:这将使密钥密码与密钥存储密码相同。
注 请记住您输入的密码,稍后您需要将此密码提供给隧道 Servlet 使其能够打开键存储。
运行 imqkeytool 命令以运行 JDK keytool 实用程序,生成自签名证书并将其放置在 MQ 的键存储文件中,该文件的位置由 keystore_location 参数指定。(键存储格式与 JDK1.2 keytool 支持的键存储格式相同。)
注 HTTPS 隧道 Servlet 必须可以访问该键存储。确保将 keystore_location 中已生成的键存储移动/复制到 HTTPS 隧道 Servlet 可以访问的位置(请参阅步骤 2:在 Web 服务器上部署 HTTPS 隧道 Servlet)。
步骤 2:在 Web 服务器上部署 HTTPS 隧道 Servlet
在 Web 服务器上部署 HTTPS 隧道 Servlet 的常见方法有两种:
- 将其部署为支持 Servlet 2.1 或更早版本的 Web 服务器 Jar 文件
- 将其部署为支持 Servlet 2.2 或更新版本的 Web 服务器 Web 归档 (WAR) 文件
在任一种情况下,都应确保激活 Web 服务器的加密功能,确保客户机与代理之间的端到端通信是安全的。
部署为 Jar 文件
部署 MQ 隧道 Servlet 包括两个步骤,首先要使主机 Web 服务器可以访问相应的 Jar 文件,然后要对该 Web 服务器进行配置,使之在启动时装入该 Servlet。
隧道 Servlet Jar 文件 (imqServlet.jar) 包含 HTTPS 隧道 Servlet 所需的所有类,该文件位于以下目录中:
IMQ_HOME/lib(在 Solaris 操作系统上为 /usr/share/lib/imq)
可以使用任何支持 Servlet 2.x 的 Web 服务器装入此 Servlet。Servlet 类名为:
com.sun.messaging.jmq.transport.
httptunnel.servlet.HttpsTunnelServlet.Web 服务器必须能够访问 imqservlet.jar 文件。如果计划在不同的主机上运行 Web 服务器和代理,应该在 Web 服务器能够访问的位置放置 imqservlet.jar 文件的一个副本。
还需要配置 Web 服务器,使之在启动时装入此 Servlet(请参阅实例:部署 HTTPS 隧道 Servlet)。
确保 JSSE Jar 文件位于 Web 服务器上运行 Servlets 的类路径中。请参阅 Web 服务器文档,了解如何执行此操作。
配置 Web 服务器有一个重要的方面,即指定 HTTPS 隧道 Servlet 用来与代理建立安全连接所需的自签名证书的位置和密码。必须将您在步骤 1:为 HTTPS 隧道 Servlet 生成自签名证书中创建的键存储放置在 HTTPS 隧道 Servlet 可以访问的位置。
同时建议您禁用 Web 服务器的访问日志功能以提高性能。
部署为 Web 归档文件
要将 HTTPS 隧道 Servlet 部署为 WAR 文件,需要使用 Web 服务器提供的部署机制。HTTPS 隧道 Servlet WAR 文件 (imqhttps.war) 位于以下目录中:
IMQ_HOME/lib(在 Solaris 操作系统上为 /usr/share/lib/imq)
WAR 文件包含一个部署描述符,该描述符包含 Web 服务器装入和运行 Servlet 所需的基本配置信息。
但是,imqhttps.war 文件的部署描述符无法知道您放置隧道 Servlet 所需的键存储的位置(请参阅步骤 1:为 HTTPS 隧道 Servlet 生成自签名证书)。因此您需要在部署 imqhttps.war 文件之前编辑隧道 Servlet 部署描述符(一个 XML 文件),以指定键存储的位置。
步骤 3:配置 httpsjms 连接服务
默认情况下,MQ 3.0.1 代理没有启用 HTTPS 支持,因此需要重新配置代理以启用 httpsjms 连接服务。重新配置后,可以按照启动代理中介绍的步骤启动代理。
启用 httpsjms 连接服务的步骤
- 打开位于以下位置的代理实例配置文件:
IMQ_VARHOME/instances/brokerName/props/config.properties
((在 Solaris 操作系统上为 /var/imq/instances/brokerName/props/config.properties)其中 brokerName 是代理实例的名称。
- 将 httpsjms 值添加到 imq.service.activelist 属性中:
imq.service.activelist=jms,admin,httpsjms
启动时,代理将在其主机上查找运行的 Web 服务器和 HTTPS 隧道 Servlet。但是要访问远程隧道 Servlet,需要重新配置 servletHost 和 servletPort 连接服务属性。
还可以重新配置 pullPeriod 属性以提高性能。表 B-3 详细介绍了 httpsjms 连接服务配置属性。
步骤 4:配置 HTTPS 连接
客户机应用程序必须使用正确配置的连接工厂被管理对象,建立与代理之间的 HTTPS 连接。
但是,客户机还必须能够访问 Java 安全套接扩展 (JSSE) 提供的 SSL 库,并且必须具有一个根证书。SSL 库是随 JDK 1.4 一起提供的。如果您使用的是早期版本的 JDK,请参阅配置 JSSE;否则,请转至输入根证书。
解决上述问题后,可以继续配置 HTTPS 连接。
配置 JSSE
配置 JSSE 的步骤
- 将 JSSE Jar 文件复制到 JRE_HOME/lib/ext 目录中。
包括 jsse.jar、jnet.jar 和 jcert.jar
- 静态添加 JSSE 安全服务供应商,
security.provider.n=com.sun.net.ssl.internal.ssl.Provider
即将以下内容添加到 JRE_HOME/lib/security/java.security文件中:(其中 n 是安全服务供应商软件包的下一个可用优先编号)。
- 如果您使用的不是 JDK1.4,则需要在启动客户机应用程序的命令中使用 -D 选项,以设置下列 JSSE 属性:
java.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol
输入根证书
如果默认情况下签署您的 Web 服务器证书的 CA 的根用户证书不在信任数据库中,或者您使用的是专用 Web 服务器证书,则必须将该证书添加到信任数据库中。如果出现上述情况,请执行以下操作;否则,请转至设置连接工厂属性。
如果证书保存在 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 支持,需要设置以下连接工厂属性(请参阅连接工厂被管理对象):
- 将 imqConnectionType 属性设置为 HTTP
通过 HTTPS 隧道 Servlet 而不是 HTTP 隧道 Servlet 进行部署和连接,可以获得安全的代理连接。但这两种方式都使用相同的连接类型。
- 将 imqConnectionURL 设置为 HTTPS 隧道 Servlet URL
https://hostName:port/imq/tunnel
可以按照以下方法之一设置连接工厂属性:
- 在创建连接工厂被管理对象(请参阅添加连接工厂)的 imqobjmgr 命令中使用 -o 选项,或在使用管理控制台 (imqadmin) 创建连接工厂时设置属性。
- 在启动客户机应用程序的命令中使用 -D 选项(请参阅《MQ 开发者指南》)。
- 通过编程方式在客户机应用程序代码中创建被管理对象(请参阅《MQ 开发者指南》)之后,使用 JMS API 调用设置其属性。
使用一个 Servlet 访问多个代理
即使正在运行多个代理,也无需配置多个 Web 服务器和多个 Servlet 实例。可以在并行运行的多个代理之间共享一个 Web 服务器和一个 HTTPS 隧道 Servlet 实例。要实现此目的,必须按照如下所示配置 imqConnectionURL 连接工厂属性:
https://hostName:port/imq/tunnel?ServerName=hostName:brokerName
其中 hostName 为代理主机名,brokerName 是您希望客户机访问的特定代理实例的名称。
要查看是否输入了正确的 hostName 和 brokerName,可以通过浏览器访问 Servlet URL,生成 HTTPS 隧道 Servlet 的状态报告。状态报告将列出 Servlet 正在访问的所有代理:
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 隧道 Servlet:
- 将 http.proxyHost 系统属性设置为代理服务器主机名。
- 将 http.proxyPort 系统属性设置为代理服务器端口号。
可以通过在启动客户机应用程序的命令中使用 -D 选项来设置这些属性。
实例:部署 HTTPS 隧道 Servlet
本节说明如何在 Sun ONE Web Server 上将 HTTPS 隧道 Servlet 部署为 Jar 文件和 WAR 文件。使用的方法取决于 Sun ONE Web Server 的版本:如果 Sun ONE Web Server 不支持 Servlet 2.2 或更新版本,则不能处理 WAR 文件部署。
部署为 Jar 文件
下面的说明适用于使用基于浏览器的管理 GUI 在 Sun ONE Web Server FastTrack Edition 4.1 上部署 HTTP 隧道 Servlet 的情况。此过程包含以下通用步骤:
- 添加 Servlet
- 配置 Servlet 虚拟路径
- 装入 Servlet
- 禁用 Servlet 访问日志
以下小节对这些步骤进行了说明。通过使用 Web 浏览器访问 Servlet URL 可以验证是否成功部署了 HTTP 隧道 Servlet。它应该显示状态信息。
添加 Servlet
添加隧道 Servlet 的步骤
- 选择“Servlets”选项卡。
- 选择“Configure Servlet Attribute”。
- 在“Servlet Name”字段中指定隧道 Servlet 的名称。
- 将“Servlet Code”(类名)字段设置为以下值:
com.sun.messaging.jmq.transport.
httptunnel.servlet.HttpsTunnelServlet
- 在“Servlet Classpath”字段中输入 imqservlet.jar 的完整路径。例如:
IMQ_HOME/lib/imqservlet.jar
(在 Solaris 操作系统上为 /usr/share/lib/imq/imqservlet.jar)
- 在“Servlet args”字段中输入必需参数和可选参数,如表 B-4 所示:
表 B-4    用于部署 HTTPS 隧道 Servlet Jar 文件的 Servlet 参数
参数
默认值
是否必需?
参阅
keystoreLocation
无
是
keystorePassword
无
是
serverHost
所有主机
无
serverPort
7674
无
参数之间用逗号分隔,例如:
keystoreLocation=keystore_location,keystorePassword=keystore_password, servletPort=portnumber
serverHost 和 serverPort 参数仅应用于 Web 服务器和代理之间的通信,仅当默认值存在问题时才需要进行设置。但是,在这种情况下,还必须相应地设置代理配置属性(请参阅表 B-3),例如:
imq.httpsjms.https.servletPort
配置 Servlet 虚拟路径 (Servlet URL)
配置隧道 Servlet 虚拟路径 (Servlet URL) 的步骤
- 选择“Servlets”选项卡。
- 选择“Configure Servlet Virtual Path Translation”。
- 设置“Virtual Path”字段。
例如,要使 URL 类似 http://hostName:port/imq/tunnel,请在“Virtual Path”字段中输入以下字符串:
/imq/tunnel
- 设置“Servlet Name”字段的值,使之与添加 Servlet 中的步骤 3 中设置的值相同。
装入 Servlet
在 Web 服务器启动时装入隧道 Servlet 的步骤
- 选择“Servlets”选项卡。
- 选择“Configure Global Attributes”。
- 在“Startup Servlets”字段中输入与添加 Servlet 中的步骤 3 中的值相同的 Servlet 名称值。
禁用服务器访问日志
不是必须禁用服务器访问日志,但禁用服务器访问日志可以获得更好的性能。
禁用服务器访问日志的步骤
- 选择“Status”选项卡。
- 选择“Log Preferences Page”。
- 使用“Log”客户机访问控制禁用日志。
部署为 WAR 文件
下面的说明适用于在 Sun ONE Web Server 6.0 SP2 上的部署。通过使用 Web 浏览器访问 Servlet URL 可以验证是否成功部署了 HTTPS 隧道 Servlet。它应该显示状态信息。
部署 HTTPS 隧道 Servlet 之前,请确保 JSSE Jar 文件位于 Web 服务器的类路径中。要达到此目的,最简单的方法是将 jsse.jar、jnet.jar 和 jcert.jar 文件复制到 IWS60_TOPDIR/bin/https/jre/lib/ext 中。
另外,部署 HTTPS 隧道 Servlet 之前,必须指定键存储密码并修改部署描述符,使其指向放置键存储文件的位置。
修改 HTTPS 隧道 Servlet WAR 文件的步骤
- 将 WAR 文件复制到临时目录中。
$ cp IMQ_HOME/lib/imqhttps.war /tmp
(在 Solaris 操作系统上为 $ cp /usr/share/lib/imq/imqhttps.war/tmp)
- 使临时目录成为当前目录。
$ cd /tmp
- 提取 WAR 文件的内容。
$ jar xvf imqhttps.war
- 列出 WAR 文件的部署描述符。
$ ls -l WEB-INF/web.xml
- 编辑 web.xml 文件,以提供正确的 keystoreLocation 和 keystorePassword 参数值(如果有必要,还包括 serverPort 和 serverHost 参数)。
- 重新装入 WAR 文件的内容。
$ jar uvf imqhttps.war WEB-INF/web.xml
现在即可使用这个修改后的 imqhttps.war 文件部署 HTTPS 隧道 Servlet 了。(如果您担心会泄漏键存储密码,可以使用文件系统权限限制对 imqhttps.war 文件的访问。)
将 HTTPS 隧道 Servlet 部署为 WAR 文件的步骤
- 在基于浏览器的管理 GUI 中,选择“Virtual Server Class”选项卡。单击“Manage Classes”。
- 选择相应的虚拟服务器类名(例如 defaultclass)并单击“Manage”按钮。
- 选择“Manage Virtual Servers”。
- 选择相应的虚拟服务器名称并单击“Manage”按钮。
- 选择“Web Applications”选项卡。
- 在“Deploy Web Application”上单击。
- 为“WAR File On”和“WAR File Path”字段选择相应的值,以指向修改后的 imqhttps.war 文件(请参阅修改 HTTPS 隧道 Servlet WAR 文件的步骤)。
- 在“Application URI”字段中输入 /imq。
- 输入要在其中部署 Servlet 的安装目录路径(通常位于 Sun ONE Web Server 的安装根目录下)。
- 单击“OK”。
- 重新启动 Web 服务器实例。
Servlet 现在即被部署到以下位置:
https://hostName:port/imq/tunnel
客户机现在即可使用此 URL 连接至使用安全 HTTPS 连接的消息服务。