《2022年第章Tomcat与其他HTTP服务器集成 .pdf》由会员分享,可在线阅读,更多相关《2022年第章Tomcat与其他HTTP服务器集成 .pdf(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 26 章Tomcat与其他 HTTP 服务器集成Tomcat 的最主要的功能是提供Servlet/JSP容器,尽管它也可以作为独立的Java Web 服务器,但在对静态资源(如HTML文件或图像文件)的处理速度,以及提供的Web 服务器管理功能方面Tomcat 都不如其他专业的HTTP 服务器,如IIS 和 Apache 服务器。因此在实际应用中,常常把Tomcat 与其他HTTP 服务器集成。对于不支持Servlet/JSP的 HTTP 服务器,可以通过Tomcat服务器来运行Servlet/JSP组件。当 Tomcat与其他 HTTP 服务器集成时,Tomcat服务器的工作模式通常为进
2、程外的Servlet容器,Tomcat 服务器与其他HTTP 服务器之间通过专门的插件来通信。关于Tomcat 服务器的工作模式的概念可以参考本书第2 章的 2.4 节(Tomcat的工作模式)。本 章首先讨论Tomcat 与 HTTP 服务器集成的 一般原 理,然后介绍Tomcat 与 Apache 服务器及 IIS 集成的 详细步骤,最 后介绍 把由多个 Tomcat 服务器 构成的集 群系统 与 Apache 服务器集成的方法。26.1 Tomcat与 HTTP 服务器集成的 原理Tomcat 服务器通过Connector 连接 器组件与 客户程序建立连接,Connector 组件 负责
3、接收客户 的请求,以及把Tomcat 服务器的 响应结果发送给客户。在 默认情况下,Tomcat在 server.xml 中配置了两种连接器:第 一个连接 器是 HTTP 连接 器,监听 8080 端口,负责建 立 HTTP 连接。在通过 浏览器访问 Tomcat 服务器的Web 应用时,使用的就是这个连接 器。第 二个连接 器是 AJP 连接 器,监听 8009 端口,负责和其他的HTTP 服务器 建立连接。在把 Tomcat 与其他 HTTP 服务器集成时,就需 要用到这个连接 器。Web 客户访问Tomcat服务器 上的 JSP组件的 两种方式如图26-1 所示。在图 26-1 中,We
4、b 客户 1 直接访问 Tomcat 服务器 上的 JSP组件,他 访问 的 URL为 http:/localhost:8080/index.jsp。Web 客户 2 则通过 HTTP 服务器 访问 Tomcat 服务器上的 JSP组件。假定 HTTP 服务器 使用的 HTTP 端口为默认 的 80 端口,那么 Web 客户 2访问 的 URL 为 http:/localhost:80/index.jsp 或者 http:/localhost/index.jsp。名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 20 页 -Tomcat与 Java Web开发技术详解(第2 版)6
5、18Tomcat&Java Web Development图 26-1 Web 客户访问Tomcat 服务器 上的 JSP组件的 两种 方式下 面,介绍 Tomcat与 HTTP 服务器之间是如何通信的。26.1.1 JK 插件Tomcat 提供 了专门的 JK 插件来 负责 Tomcat 和 HTTP 服务器的通信。应该把 JK插件 安置 在对方的HTTP 服务器 上,当 HTTP 服务器 接收到客户请求时,它 会通过 JK插件来过 滤 URL,JK 插件 根据预先配置好的 URL 映射 信息,决定 是否要把客户请求转发给 Tomcat 服务器处理。假定 在预先配置好 的 URL 映射 信息
6、 中,所有“/*.jsp”形 式的 URL 都由 Tomcat服务器来处理,那么 在如图 26-1 所示 的例子 中,JK 插件 将把 Web 客户 2 的请求转发给 Tomcat服务器,Tomcat 服务器于是运行index.jsp,然后 把响应结果 传给 HTTP 服务器,HTTP 服务器 再把响应 结果 传给 Web 客户 2。对于不 同的 HTTP 服务器,Tomcat 提供 了不同的 JK 插件的实 现模块,本 章将用到以下 JK 插件。l 与 Windows 下的 Apache HTTP 服务器集成:mod_jk.sol。l 与 Linux 下的 Apache HTTP 服务器集成
7、:mod_jk_linux.so。l 与 IIS 服务器集成:isapi_redirect.dll。26.1.2 AJP 协议AJP 是为 Tomcat 与 HTTP 服务器之间通信而定制的协议,能提供 较高的通信速度和效率。在 配置 Tomcat 与 HTTP 服务器集成时,读者可以不 必关心 AJP 协议 的细节。关于 AJP 的知识 可以参考以 下网站:http:/tomcat.apache.org/connectors-doc/ajp/ajpv13a.html 26.2 在 Windows 下 Tomcat与 Apache服务器集成Apache HTTP 服务器(下文简称 Apache
8、 服务器或 者 Apache)是由 Apache 软件组织提供的 开放 源代码软 件,它是 一个 非常优秀 的专业的 Web 服务器,为 网络 管理 员提供了丰富 多彩的 Web 管理功能,包括目录索引、目录别名、内容协商、可配置 的 HTTP名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 20 页 -第 26 章Tomcat与其他 HTTP 服务器集成Tomcat&Java Web Development619Tips 错误报告、CGI 程序的 SetUID 功能、子进程资源管理、服务器 端图像 映射、重写 URL、URL 拼写检查 及联机手册等。Apache 服务器本 身没
9、有 提供 Servlet/JSP 容器。因此,在实际应用中,把Tomcat与 Apache 服务器集成,可以建立具有实用 价值 的商业化的 Web 平台。在 Windows XP 下 Tomcat与 Apache 服务器集成 需要准备的软件参 见表 26-1。表 26-1 在 Windows XP 下 Tomcat 与 Apache 服务器集成需要准备的软件软件下 载 位 置本书附赠光盘上的位置基 于Windows XP的Apache HTTP 服务器 软件http:/httpd.apache.org/software/apache_2.0.63-win32-x86-no_ssl.msi JK
10、 插件http:/tomcat.apache.org/download-connectors.cgi sourcecode/chapter26/windows_apache/mod_jk.so 1安装 Apache 服务器运行 apache_2.0.63-win32-x86-no_ssl.msi,就启动 了 Apache 服务器的 安装程序,只要按 默认 设置进行 安装即 可。如果安 装成功,会自动 在 Windows 中加入 Apache HTTP服务,如图26-2 所示。图 26-2 加入 到 Windows 服务 列表 中的 Apache 服务假定 Apache 服务器的 根 目录 为,
11、在其 conf 子目录 下有一个配置文件 httpd.conf。如 果 Apache 安装在本 机上,并且采 用默认 的 80 端口 作为 HTTP 端口,则 在 httpd.conf 文件中 会 看到如下属性:Listen 80 在 操作系统 的【开始】【程序】【Apache HTTP Server 2.0】【Control Apache Server】菜单 中,提供 了重启(Restart)、启动(Start)和关 闭(Stop)Apache 服务器的子菜单。应该确保操作系统的80 端口没有被占用,否则Apache 服务器无法启动。当 Apache 服务器 启动 后,就可以通过 访问 Ap
12、ache 的测试页 来确定是否安 装成功。访问 http:/localhost,如果出现如图 26-3 所示的网页,就说明 Apache 已经 安装成功 了。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 20 页 -Tomcat与 Java Web开发技术详解(第2 版)620Tomcat&Java Web Development图 26-3 Apache 服务器的 测试 网页2在 Apache 服务器中加入JK 插件要在 Apache 服务器中 加入 JK 插件,只要把 mod_jk.so 复制到/modules目录 下即可。3创建 workers.properties 文件
13、Apache 服务器把Tomcat 看做是为 自己工作的工 人(worker)。workers.properties文件用于 配置Tomcat 的信 息,它的 存 放 位置 为/conf/workers.properties。在本书附赠光盘的sourcecode/chapter26/windows_apache 目录 下提供 了workers.properties 文件,它的 内容如 下(“#”后 面为注释 信息):worker.list=worker1 worker.worker1.port=8009#工作端口,若没占用则不用修改worker.worker1.host=localhost#T
14、omcat服务器的地址worker.worker1.type=ajp13#类型worker.worker1.lbfactor=1#负载平衡因数以 上文件中的 属性 描述 参见表 26-2。表 26-2 workers.properties 文件的属性属性描述worker.list 指定 Tomcat 服务器名单worker.worker1.port 指定 Tomcat 服务器使用的 AJP 端口worker.worker1.host 指定 Tomcat 服务器的 IP 地址worker.worker1.type 指定 Tomcat 服务器与 Apache 服务器之间的通信 协议worker.w
15、orker1.lbfactor 指定负 载平衡因数(Load Balance Factor)。只有在使用了负载平衡器(LoadBalancer)的情况下,这个属性 才有意义以 上 worker.list 指定 Tomcat服务器 名单。例如“worker.list=worker1”表示只有一个 Tomcat 服务器,名为“worker1”。再例 如“worker.list=worker1,worker2”表示有两个Tomcat 服 务 器,分 别名 为“worker1”和“worker2”。worker.worker1.port及worker.worker1.host 用于 设置 名为“wor
16、ker1”的 Tomcat 服务器的 有关属性,如 果要设名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 20 页 -第 26 章Tomcat与其他 HTTP 服务器集成Tomcat&Java Web Development621置 worker2 的 port 属性,则可以 采用“worker.worker2.port=8109”的形式。4修改 Apache 服务器的配置文件httpd.conf 打 开/conf/httpd.conf文件,在其 末尾 加入 以下内容:#Using mod_jk.so to redirect dynamic calls to Tomcat Loa
17、dModule jk_module modules/mod_jk.so JkWorkersFile conf/workers.properties JkLogFile logs/mod_jk.log JkLogLevel debug JkMount/*.jsp worker1 JkMount/helloapp/*worker1 在本书 附赠光盘 的 sourcecode/chapter26/windows_apache/httpd_modify.conf 文件中提供 了 以上内容,它 指示 Apache 服务器 加载 JK 插件,并且 为 JK 插件设置相关属性,这些属性 的描述 参见表 26
18、-3。表 26-3 JK 插件的相关属性属性描述LoadModule 指定加载的 JK 插件JkWorkersFile 指定 JK 插件的工作文件JkLogFile 指定 JK 插件使用的 日志文件,在实际 配置中,可以通过 查看这个日志文件,来 跟踪 JK插件的运行过程,这对排错很有用JkLogLevel 指定 JK 插件的 日志级别,可 选值包括 debug、info 和 error等JkMount 指定 JK 插件处理的URL 映射信息JkMount 用来 指定 URL 映射 信息,“JkMount/*.jsp worker1”表示“/*.jsp”形式的 URL 都由 worker1 代
19、表 的 Tomcat 服务器来处理;“JkMount/helloapp/*worker1”表示访问 helloapp 应用的 URL 也都 由 worker1 来处理。5测试配置重启 Tomcat 服务器和Apache 服务器,并通过浏览 器访问 http:/localhost/index.jsp,如果出 现 Tomcat 的默认 主页,就说明 配置 已经成功。此外,如果在 Tomcat 服务器 上已经 发 布了 helloapp 应用(把本书 附赠光盘 的 sourcecode/chapter26 目录 下的 helloapp目 录 复 制 到/webapps目 录 下),则 可 以 访 问
20、http:/localhost/helloapp/hello.htm,如 果正常 返回 helloapp 应用的 hello.htm 网页,说明配置 已经成功。如果配置有 误,可以 查看 JK 插件 生成的 日志信息,它有助于查找错误 原因。在 Apache服 务 器 的 配 置 文 件httpd.conf中 设 定 该 日 志 文 件 的 存 放 位 置 为/logs/mod_jk.log。26.3 在 Linux 下 Tomcat与 Apache服务器集成在 Linux 下 Tomcat 与 Apache 服务器集成的步骤 与在 Windows XP 下非常相似。在 Linux 下 Tom
21、cat 与 Apache 服务器集成 需要准备的软件参 见表 26-4。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 20 页 -Tomcat与 Java Web开发技术详解(第2 版)622Tomcat&Java Web Development表 26-4 在 Linux 下 Tomcat 与 Apache 服务器集成需要准备的软件软件下 载 位 置本书附赠光盘上的位置基 于Linux的Apache HTTP 服务器 软件http:/httpd.apache.org/software/httpd-2.0.63.tar.gz JK 插件http:/tomcat.apache.o
22、rg/download-connectors.cgi sourcecode/chapter26/linux_apache/mod_jk_linux.so 下 文介绍 在 Linux(以 RedHat 为例)下把 Tomcat与 Apache 服务器集成的方法。1安装 Apache 服务器以 下是在 Linux 下安 装 Apache 服务器的 步骤。(1)建 立 httpd 用户,把 httpd-2.0.63.tar.gz 文件复制到/tmp 目录下。(2)将 httpd-2.0.63.tar.gz 文件 解压,命令 为:gzip-d httpd-2.0.63.tar.gz tar xvf h
23、ttpd-2.0.63.tar(3)用 超级 用户账号登 录 Linux,命令 为:su(4)转到/tmp/httpd-2.0.63 目录,配置 Apache 服务器,命令 为:./configure-prefix=/home/httpd“-prefix”选项 用来 设定 Apache 的 安装目录。根据 以上设置,Apache 将被安装到/home/httpd 目录。(5)编译 Apache,命令 为:make。(6)安 装 Apache,命令 为:make install。(7)在安装好 以后,假定 Apache 的根目录为 ,打开/conf/httpd.conf文件,配置“Listen”
24、和“ServerName”属性:Listen 80 ServerName localhost(8)转到/bin目录,通过运行apachectl configtest 命令,来 测试安装 是否成功。如 果显示 Syntax ok,则表示安 装成功。启动 Apache 服务器的 命令 为:/bin/apachect1 start。终止 Apache 服务器的 命令 为:/bin/apachect1 stop。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 20 页 -第 26 章Tomcat与其他 HTTP 服务器集成Tomcat&Java Web Development623Tip
25、s 应该确保操作系统的80 端口没有被占用,否则Apache 服务器无法启动。也可以通过 访问 Apache 的测试页 来 确定是否安装成功。访问 http:/localhost,如果出现 如本 章 26.2 节的图 26-3 所示 的网页,就说明 Apache 已经安装成功 了。2在 Apache 服务器中加入JK 插件要在 Apache 中加入 JK 插件,只要把 mod_jk_linux.so 复制到/modules目录 下即可。3创建 workers.properties 文件在/conf目录 下 创建以下 workers.properties 文件。此外,在本书附赠光盘 的 sour
26、cecode/chapter26/linux_apache目录 下也提供 了该 文件:worker.list=worker1 worker.worker1.port=8009#工作端口,若没占用则不用修改worker.worker1.host=localhost#Tomcat服务器的地址worker.worker1.type=ajp13#类型worker.worker1.lbfactor=1#负载平衡因数4修改 Apache 服务器的配置文件httpd.conf 打 开/conf/httpd.conf文件,在其 末尾 加入 以下内容:LoadModule jk_module modules/m
27、od_jk_linux.so JkWorkersFile conf/workers.properties JkLogFile logs/mod_jk.log JkLogLevel debug JkMount/*.jsp worker1 JkMount/helloapp/*worker1 在本书 附赠光盘 的 sourcecode/chapter26/linux_apache 目录 下的 httpd_modify.conf文件中提供 了以上内 容。5测试配置重启 Tomcat服务器和 Apache 服务器。通过 浏览器访问 http:/localhost/index.jsp,如果出现 Tomca
28、t的 默认 主页,说明 配置 已经 成功。此外,如 果在 Tomcat服务器 上已经 发布了 helloapp 应用(把本书 附赠光盘 的 sourcecode/chapter26目录 下的 helloapp 目录 复制到/webapps目 录 下),则 可 以 访 问http:/localhost/helloapp/hello.htm,如 果正常返回 helloapp 应用的 hello.htm 网页,说明 配置已经成功。如 果配置有误,可以 查看 JK 插件 生成的日志 信息,它有助于查找错误原因。在 Apache 的配置 文件 httpd.conf 中 设定该 日志 文件的 存放位置为:
29、/logs/mod_ jk.log。26.4 Tomcat与 IIS 服务器集成IIS(Internet Information Service)服务器是 微软开 发的功能 强大 的 Web 服务器,它为 创 建和开发电子商 务提供 了安 全 的 Web 平台。把 Tomcat 与 IIS 集成,可以 扩展 IIS名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 20 页 -Tomcat与 Java Web开发技术详解(第2 版)624Tomcat&Java Web DevelopmentTips 的功能,使它支持 Java Web应用。如 果在 Windows 操作系统 中还未
30、安装 IIS,可以 选择 操作系统 的【控制面板】【添 加/删除 程序】【添 加/删除 Windows 组件】菜单,然后安 装 IIS,在 安装过程中要提供 Windows 操 作系统 的安装 光盘。26.4.1 准备相关文件在 开始 本节的操 作之 前,假定 在机器 上安 装了 IIS 服务器,接下 来应该准备 好以下3 个文件。1JK 插件在本书 附赠光盘 的 sourcecode/chapter26/iis 目录 下提供 了用于IIS 的 JK 插件:isapi_redirect.dll,此外,也可以到以下地址 下载最新的 JK 插件:http:/tomcat.apache.org/do
31、wnload-connectors.cgi 可以把 JK 插件 isapi_redirect.dll 复 制到/bin目录 下。2workers.properties 文件在/conf目录 下创建如下的 workers.properties 文件,在本书附赠光盘 的 sourcecode/chapter26/iis 目录 下也提供 了该 文件:worker.list=worker1 worker.worker1.port=8009#工作端口,若没占用则不用修改worker.worker1.host=localhost#Tomcat服务器的地址worker.worker1.type=ajp13#
32、类型worker.worker1.lbfactor=1#负载平衡因数3uriworkermap.properties 文件在/conf目录 下 创建如下的 uriworkermap.properties 文件,它为 JK 插件 指 定 URL 映射。在本书 附赠光盘 的 sourcecode/chapter26/iis 目录 下也提供 了该文件:/*.jsp=worker1/helloapp/*=worker1 尽管把以上3 个文件都放在Tomcat 目录下,但其实Tomcat 服务器并不会访问这些文件。以上给出的是按照惯例的一种配置,事实上,也可以把这些文件放在文件系统的其他地方。26.4.
33、2 编辑注册表在 配置 Apache 和 Tomcat 集成时,JK 插件的 属性 是在 Apache 的配置 文件 httpd.conf中设置 的。在 配置 IIS 和 Tomcat 集成时,应 该在操作系统 的注册表 中设置 JK 插件的属性,以 下是操作步骤。(1)在Windows XP 中通过regedit 命令编 辑注册表,创建一个 新 的键:名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 20 页 -第 26 章Tomcat与其他 HTTP 服务器集成Tomcat&Java Web Development625HKEY_LOCAL_MACHINESOFTWAREApa
34、che Software FoundationJakarta Isapi Redirector 1.0,如图 26-4 所示。图 26-4 在注册表 中创建 Jakarta Isapi Redirector1.0 键(2)在 Jakarta Isapi Redirector1.0 键下面创建新的字符串,参 见表 26-5,创建好之后的 注册表 如图 26-5 所示。表 26-5 在 Jakarta Isapi Redirector1.0 键下面创建的字符串字符串字 符 串 值描述extension_uri/jakarta/isapi_redirect.dll 指定访问 isapi_redire
35、ct.dll 文件的 uri,在 IIS 中将创建名为jakarta 的虚拟目录,在该目录 下包含 isapi_redirect.dll 文件,参见本章 26.4.3 节log_file C:tomcatlogsisapi.log 指定 JK 插件使用的日志文件,在实际 配置中,可以通过 查看这个日志文件,来跟踪 JK插件的运行过程,这对排错很有用log_level debug 指定 JK插件的日志级别,可选值包括 debug、info 和error等worker_file C:tomcatconfworkers.properties 指定 JK 插件的工作文件worker_mount_fil
36、e C:tomcatconfuriworkermap.properties 指定 JK 插件的 URL 映射 文件图 26-5 在 Jakarta Isapi Redirector1.0 键下面创建新的字符串在本书 附赠光盘 的 sourcecode/chapter26/iis 目录 下提供 了注册表 编辑文件 jk.reg,如果不 想按照以上方式 手工修改注 册表,也可以 直接 运行 jk.reg 文件(选中这个 文件再双击鼠标 即可),它 会把以 上配置 内容自动 添加到注册表 中。jk.reg 的内容如下:Windows Registry Editor Version 5.00 名师资料
37、总结-精品资料欢迎下载-名师精心整理-第 9 页,共 20 页 -Tomcat与 Java Web开发技术详解(第2 版)626Tomcat&Java Web DevelopmentHKEY_LOCAL_MACHINESOFTWAREApache Software FoundationJakarta Isapi Redirector 1.0 extension_uri=/jakarta/isapi_redirect.dll log_file=C:tomcatlogsisapi.log log_level=debug worker_file=C:tomcatconfworkers.propert
38、ies worker_mount_file=C:tomcatconfuriworkermap.properties 在运行jk.reg 文件之 前,应 该把文件中的“C:tomcat”目录 替换 为读者本地机器上的 Tomcat的实际 安装目录。26.4.3 在 IIS 中加入“jakarta”虚拟目录当 注册表 修改 以 后,应 该在 IIS 中加入名 为“jakarta”的虚拟 目录,它是 JK 插件所在的 目录,以 下是 操作步骤。(1)选择 操作系统 的【控 制面板】【管理工 具】【Internet 服务管理器】选项,打 开 Internet 信息服务管理器,如图26-6 所示。(2)
39、选中【默认 Web 站点】选项,然后 单击鼠标右键,在其 下拉菜单 中选择【新建】【虚拟 目录】选项,如图 26-7 所示。创建一个 虚拟目录,名为“jakarta”,对应的 实 际 文 件 资 源 路 径 应 该 是isapi_redirect.dll文 件 所 在 的 目 录/bin。图 26-6 Internet 信息服务管理器 窗口图 26-7 创建虚拟 目录(3)修改 刚刚 创建的 jakarta 虚拟 目录 的属性,将其执行许可权限设为“脚本和可执行程 序”,如图 26-8 所示。这步 操作 很重要,它将保证在注册表中设置的 extension_uri对应的/jakarta/isa
40、pi_redirect.dll 可以 被 执行。如果漏掉 这步操作,会导致无 法访问 Tomcat中的 Servlet/JSP组件。名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 20 页 -第 26 章Tomcat与其他 HTTP 服务器集成Tomcat&Java Web Development627图 26-8 修改 jakarta 虚拟 目录 的执行许可权限26.4.4 把 JK 插件作为 ISAPI 筛选器加入到 IIS 中在 IIS 中加入名 为“jakarta”的虚拟 目录 后,还应该把 JK 插件作为ISAPI 筛选器(也 称 为过 滤器)加入 到 IIS 中,以
41、 下是 操作步骤。(1)在【Internet 信息 服务】主窗口的 目录树中选择 IIS 主机节点,然后 单击鼠标右键,在其 下拉菜单 中选择【属性】选项,如图 26-9 所示。在 出现的窗口中单击【编辑】按 钮,打开 IIS 主机的 属性 窗口,如图 26-10 所示。图 26-9 配置 IIS 主机的属性图 26-10 IIS 主机的属性 窗口(2)在主 属性 的 WWW 服务 区域 单击【编辑】按钮,打开 WWW 服务主 属性 窗口,增 加 新 的ISAPI筛 选 器,筛 选 器 名 称 为“jakarta”,可 执 行 文 件 为/bin/isapi_redirect.dll,如图 2
42、6-11 所示。(3)重新 启动 IIS 服务器,如 果配置 正常,在 WWW 服务主 属性的 ISAPI 筛选器子窗口 中,新加的 jakarta 筛选器的 状态应 该变为绿色向 上的箭头,如图 26-12 所示。名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 20 页 -Tomcat与 Java Web开发技术详解(第2 版)628Tomcat&Java Web Development图 26-11 增加新的 ISAPI 筛选器图 26-12 jakarta 筛选器被装载如 果如图 26-12 所示 的 jakarta 筛选器的 箭头仍 然为红色,表明 JK 插件没有装载成
43、功,这 可能是 由于以 下原 因引起的:l 在/bin目录 下不存在 isapi_redirect.dll 文件。l 没有正确地 按照本章 26.4.2 节的步骤 编辑注册表。26.4.5 测试配置重启 Tomcat 服务器和IIS 服务器,并通过 浏览 器访问 http:/localhost/index.jsp。如果出现 Tomcat 的默认 主页,说明 配置 已经 成功。此外,如果在 Tomcat 服务器 上已经发布了 helloapp 应用(把本书 附赠光盘 的 sourcecode/chapter26目录 下的 helloapp 目录复制到/webapps目录 下),则可以 访问htt
44、p:/localhost/helloapp/hello.htm,如 果正常返回 helloapp 应用的hello.htm 网页,说明 配置 已经 成功。如 果配置有 误,可以 查看 JK 插件 生 成的 日志 信息,它有助于查找错误 原因。在 注册表 中设定该日志 文件的 存放位 置为/logs/isapi.log。26.5 Tomcat集群在实际应用中,如果网站 的访问 量非常 大,为了提高访问速度,可以 将多个 Tomcat服务器与Apache 服务器集成,让它们共 同分 担运行Servlet/JSP 组件的 任务。多个Tomcat 服务器 构 成了一个 集群(Cluster)系统,共同
45、为客户 提供服务。集 群系统 具有以下优 点。l 高可靠性:当一台服务器 发 生故障 时,集 群系统 能够自动 把工作 任务转交给另一台正常运行的服务器,以便为用 户提供 透明的不间 断的服务。l 高性 能计算:充分利用集 群 中的 每一台服务器的 软件和 硬件资源,实 现复杂运算的并行处理,通常用于科学计算领域,比如基因分析和化学分析等。l 负载平衡:把负载压 力根据 某种算法合理分配到 集群中的 每一台服务器 上,名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 20 页 -第 26 章Tomcat与其他 HTTP 服务器集成Tomcat&Java Web Developme
46、nt629以减轻 单个 服务器的 压力,降低 对单个服务器的 硬件和软件要 求。图 26-13 显示了由 JK 插件和 两个 Tomcat 服务器 构成的集 群系统。集群系统 的正常运作 离不开以下两个 组件。l JK 插件的 loadbalancer(负载平 衡器):根据 在 workers.properties 文件中 预先配置 的 lbfactor(负载平 衡因数),负责为集 群系统 中的 Tomcat 服务器 分配工作负荷,以实 现负载平衡。l 每个 Tomcat 服务器 上的集 群管理器(SimpleTcpCluster):每个 Tomcat服务器上的集 群管理器通过TCP 连接 与
47、集 群系统 中的其他Tomcat 服务器通信,以实现 HTTP 会话的复制,以及把Web 应用发布到集群系统 中的 每个 Tomcat服务器 上。图 26-13 Tomcat 集群系统26.5.1 配置集群系统的负载平衡器假定 在 Windows 中,把 Apache 服务器和 两个 Tomcat 服务器集成。为了方便读者在本 地 机器上做实验,这两个 Tomcat 服务器和 Apache 服务器都运行在同一台机器上,Tomcat1(根目录 为 C:tomcat1)使用的 AJP 端口为 8009,Tomcat2(根目录 为 C:tomcat2)使用的 AJP 端口 为 8109。如 果两个
48、Tomcat 服务器运行在不同的机器上,那么 它们可以使用 相同的 AJP 端口。以 下是把 Apache 和这两个 Tomcat服务器集成,以及配置负 载平衡器的 步骤。(1)把 mod_jk.so 复制到/modules目录 下。(2)在/conf目录 下创建如下的 workers.properties 文件(注意粗体部 分的内容):worker.list=worker1,worker2,loadbalancerworker.worker1.port=8009#工作端口,若没占用则不用修改worker.worker1.host=localhost#Tomcat服务器的地址worker.wo
49、rker1.type=ajp13#类型worker.worker1.lbfactor=100#负载平衡因数名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 20 页 -Tomcat与 Java Web开发技术详解(第2 版)630Tomcat&Java Web DevelopmentTips worker.worker2.port=8109#工作端口,若没占用则不用修改worker.worker2.host=localhost#Tomcat服务器的地址worker.worker2.type=ajp13#类型worker.worker2.lbfactor=100#负载平衡因数wor
50、ker.loadbalancer.type=lb worker.loadbalancer.balanced_workers=worker1,worker2 worker.loadbalancer.sticky_session=false worker.loadbalancer.sticky_session_force=false 以 上文件 创建了两个监听AJP 端口 的 worker:worker1 和 worker2。worker1 和worker2 分别代表 两个 Tomcat 服务器,它 们由负 载平衡器来进行 调度。由于本实 验中的 worker1 和 worker2 运行在 同一个