Tomcat最主要的功能是提供Servlet/jsp容器,尽管它也可以作为独立的Java Web服务器,它在对静态资源(如Html文件或图像文件)的处理速度,以及提供的Web服务器治理功能方面都不如其他专业的HTTP服务器,如IIS和Apache服务器。
  
  因此在实际应用中,经常把Tomcat与其他HTTP服务器集成。对于不支持Servlet/JSP的HTTP服务器,可以通过Tomcat服务器来运行Servlet/JSP组件。
  
  当Tomcat与其他HTTP服务器集成时,Tomcat服务器的工作模式通常为进程外的Servlet容器,Tomcat服务器与其他HTTP服务器之间通过专门的插件来通信。关于Tomcat服务器的工作模式的概念可以参考本书1.4节。
  
  本章首先讨论Tomcat与HTTP服务器集成的一般原理,然后介绍Tomcat与Apache以及IIS集成的具体步骤。
  
  22.1 Tomcat与HTTP服务器集成的原理
  
  Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给客户。默认情况下,Tomcat在server.XML中配置了两种连接器:
  
  <!-- Define a non-SSL Coyote HTTP/1.1
  Connector on port 8080 -->
  <Connector port="8080"
  maxThreads="150"
  minSpareThreads="25"
  maxSpareThreads="75"
  enableLookups="false"
  redirectPort="8443"
  acceptCount="100"
  debug="0"
  connectionTimeout="20000"
  disableUploadTimeout="true" />
  
  <!-- Define a Coyote/JK2 AJP 1.3
  Connector on port 8009 -->
  <Connector port="8009"
  enableLookups="false"
  redirectPort="8443" debug="0"
  protocol="AJP/1.3" />
  
  第一个连接器监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
  
  第二个连接器监听8009端口,负责和其他的HTTP服务器建立连接。在把Tomcat与其他HTTP服务器集成时,就需要用到这个连接器。
  
  Web客户访问Tomcat服务器上JSP组件的两种方式如图22-1所示。
   
  图22-1 Web客户访问Tomcat服务器上的JSP组件的两种方式
  
   在图22-1中,Web客户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。
  
  下面,介绍Tomcat与HTTP服务器之间是如何通信的。
  
  22.1.1 JK插件
  
   Tomcat提供了专门的JK插件来负责Tomcat和HTTP服务器的通信。应该把JK插件安置在对方的HTTP服务器上。当HTTP服务器接收到客 户请求时,它会通过JK插件来过滤URL,JK插件根据预先配置好的URL映射信息,决定是否要把客户请求转发给Tomcat服务器处理。
  
   假定在预先配置好的URL映射信息中,所有"/*.jsp"形式的URL都由Tomcat服务器来处理,那么在图22-1的例子中,JK插件将把客户请 求转发给Tomcat服务器,Tomcat服务器于是运行index.jsp,然后把响应结果传给HTTP服务器,HTTP服务器再把响应结果传给Web 客户2。
  
  对于不同的HTTP服务器,Tomcat提供了不同的JK插件的实现模块。本章将用到以下JK插件:
  
  与Windows下的Apache HTTP服务器集成:mod_jk_2.0.46.dll
  
  与Linux(RedHet)下的Apache HTTP服务器集成:mod_jk.so-ap2.0.46-rh72..46-rh72
  
  与IIS服务器集成:isapi_redirect.dll
  
  22.1.2 AJP协议
  
  AJP是为Tomcat与HTTP服务器之间通信而定制的协议,能提供较高的通信速度和效率。在配置Tomcat与HTTP服务器集成中,读者可以不必关心AJP协议的细节。关于AJP的知识也可以参考网址:
  
  http://jakarta.apache.org/builds/jakarta-tomcat-connectors/jk2/doc/common/AJPv13.html
  
  22.2 在Windows下Tomcat与Apache服务器集成
  
   Apache HTTP服务器是Apache软件组织提供的开放源代码软件,它是一个非常优秀的专业的Web服务器,为网络治理员提供了丰富多彩的Web治理功能,包括 目录索引、目录别名、内容协商、可配置的HTTP错误报告、CGI程序的SetUID执行、子进程资源治理、服务器端图像映射、重写URL、URL拼写检 查以及联机手册等。
  
  Apache HTTP服务器本身没有提供Servlet/JSP容器。因此,在实际应用中,把Tomcat与Apache集成,可以建立具有实用价值的商业化的Web 平台。在Windows NT/2000下Tomcat与Apache服务器集成需要预备的软件参见表22-1。
  
  表22-1 在Windows NT/2000下Tomcat与Apache服务器集成需要预备的软件
   
  1、安装Apache HTTP服务器
  
  运行apache_2.0.47-win32-x86-no_ssl.msi,就启动了Apache HTTP服务器的安装程序,只要按默认设置进行安装即可。假如安装成功,会自动在Windows中加入Apache HTTP服务,如图22-2所示。
   
  图22-2 加入到Windows服务中的Apache服务
  
  假定Apache的根目录为,在其conf子目录下有一个配置文件httpd.conf。假如Apache安装在本机,并且采用默认的80端口作为HTTP端口,在httpd.conf文件中会看到如下属性:
  
  Listen 80
  ServerName localhost:80
  
  在操作系统的【开始】→【程序】→【Apache HTTP Server 2.0.47】→【Control Apache Server】菜单中,提供了重启(Restart)、启动(Start)和关闭(Stop)Apache服务器的子菜单。
  
  应该确保80端口没有被占用,否则Apache服务器无法启动。Apache服务器启动后,就可以通过访问Apache的测试页来确定是否安装成功。访问http://localhost,假如出现如图22-3所示的网页,就说明Apache已经安装成功了。
   
  图22-3 Apache服务器的测试网页
  
  2、在Apache中加入JK插件
  
  在Apache中加入JK插件,只要把mod_jk_2.0.46.dll拷贝到/modules目录下即可。
  
  3、创建workers.properties文件
  
   workers.properties文件用于配置Tomcat的信息,它的存放位置为 /conf/workers.properties。在本书配套光盘的sourcecode/chapter22/windows_apache目录下提 供了workers.properties文件,它的内容如下("#"后面为注释信息):
  
  workers.tomcat_home=C:\jakarta-tomcat
  #让mod_jk模块知道Tomcat
  workers.java_home=C:\j2sdk1.4.2
  #让mod_jk模块知道j2sdk
  ps=#指定文件路径分割符
  worker.list=worker1
  worker.worker1.port=8009
  #工作端口,若没占用则不用修改
  worker.worker1.host=localhost
  #Tomcat服务器的地址
  worker.worker1.type=ajp13
  #类型
  worker.worker1.lbfactor=1
  #负载平衡因数
  
  以上文件中的属性描述参见表22-2。
  
  表22-2 workers.properties文件的属性
   
  4、修改Apache的配置文件httpd.conf
  
  打开/conf/httpd.conf文件,在其末尾加入以下内容:
  
  # Using mod_jk2.dll to
  redirect dynamic calls to Tomcat
  LoadModule jk_module
  modules\mod_jk_2.0.46.dll
  JkWorkersFile
  "conf\workers.properties"
  JkLogFile "logs\mod_jk2.log"
  JkLogLevel debug
  JkMount /*.jsp worker1
  JkMount /helloapp/* worker1
  
  在本书配套光盘的sourcecode/chapter22/windows_apache/httpd_modify.conf文件中提供了以上内容,它指示Apache服务器加载JK插件,并且为JK插件设置相关属性,这些属性的描述参见表22-3。
  
  表22-3 JK插件的相关属性
  
   JkMount用来指定URL映射信息,"JkMount /*.jsp worker1"表示"/*.jsp"形式的URL都由worker1代表的Tomcat服务器来处理;"JkMount /helloapp/* worker1"表示访问helloapp应用的URL都由worker1来处理。
  
  5、测试配置
  
  重启 Tomcat服务器和Apache服务器,通过浏览器访问http://localhost/index.jsp,假如出现Tomcat的默认主页,说明 配置已经成功。此外,假如在Tomcat服务器上已经发布了helloapp应用,可以访问http://localhost/helloapp /index.htm,假如正常返回helloapp应用的index.htm网页,说明配置已经成功。
  
  假如配置有误,可以查看JK插件生成的日志信息,它有助于查找错误原因。在Apache的配置文件httpd.conf中设定该日志文件的存放位置为/logs/mod_jk2.log
  
  6、Apache与多个Tomcat服务器集成时的负载平衡
  
   在实际应用中,假如网站的访问量非常大,为了提高访问速度,可以将多个Tomcat服务器与Apache集成,让它们共同分担运行 Servlet/JSP组件的任务。 JK插件的loadbalancer(负载平衡器)负责根据在workers.properties文件中预先配置的lbfactor(负载平衡因数)为 这些Tomcat服务器分配工作负荷,实现负载平衡。
  
  假定Apache和两个Tomcat服务器集成,一个Tomcat服务器和Apache运行在同一台机器上,使用的JK端口为8

摘自http://www.studyems.com/network/85500f121604b5b9.html

转载于:https://www.cnblogs.com/fibonaccixue/p/5212623.html

Tomcat开发技术之与HTTP服务器的集成相关推荐

  1. 游戏服务器开发技术小结

    转载请自觉标明原创出处 原文链接:http://gameislife.info/archives/category/游戏开发    游戏服务器开发技术小结 1 概述 本文从开发者的视角,浅析游戏服务器 ...

  2. 微信公众号开发小记(二)--服务器验证

    这篇是微信公众号开发小记的第二篇,承接上一篇,此次将完成如下主要功能 对接微信服务器和自己的服务器 需要的"材料" 到这里需要梳理一下都需要什么东西,以便在整个编码的过程中方便我们 ...

  3. [_CN] Eclipse精要与高级开发技术 note

    [_CN] Eclipse精要与高级开发技术 note 一 eclipse是基于java的 ide ,但根据其体系结构,开发插件,也可拓展到其他语言-------- 尽管如此,但还是很少听说用ecli ...

  4. 【渝粤题库】广东开放大学 java web开发技术 形成性考核

    题库查询系统 选择题 题目:当多个用户请求同一个JSP页面时,Tomcat服务器为每个客户启动一个_____. 题目:以下_____不是JSP运行所必须的条件. 题目:Tomcat服务器的默认端口为_ ...

  5. java web 应用技术与案例教程_《Java Web应用开发技术与案例教程》怎么样_目录_pdf在线阅读 - 课课家教育...

    出版说明 前言 第1章 java Web应用开发技术概述 1.1 Java Web应用开发技术简介 1.1.1 Java Web应用 1.1.2 Java Web应用开发技术 1.2 Java Web ...

  6. Ext群 群主大漠穷秋的五年开发技术集合

    欢迎加入大漠穷秋群:83163037 五余年的一线设计,开发技术沉淀加上一颗对技术近乎痴迷的心成就了一套自己的技术框架体系, 能使开发效率提高百分之三十左右! 精通java语言,j2se j2ee W ...

  7. Web开发技术课程设计

    文章目录 Project课程设计要求 项目要求 设计内容 主要功能 前台网站 后台系统 Readme项目介绍 项目概要 项目部署 代码编写 实现功能 提醒1:本篇所有内容(源代码.使用图片.配置文件) ...

  8. 《SpringBoot框架开发技术整合》笔记(一)

    文章目录 前言 第一章 构建简单WEB项目 第二章 SpringBoot接口返回Json 第三章 SpringBoot热部署 第四章 SpringBoot资源文件属性 前言     笔者近期在慕课网上 ...

  9. 【开发技术】2万字详细介绍Docker 和 web项目的部署监控,docker部署,拉取kafana,prometheus镜像监控

    SpringBoot 内容管理 Linux Redis Connnect 设置服务器redis开机自启动 修改Redis配置文件 关闭防火墙 关闭selinux 连接Redis Docker Dock ...

  10. java web应用开发技术_第一章 Java Web应用开发技术

    Java Web应用开发是基于JavaEE(JavaEnterprise Edition)框架的,而JavaEE是建立在Java平台上的企业级应用解决方案.JavaEES框架提供的Web开发技术主要支 ...

最新文章

  1. java crossdomin.xml_crossdomain.xml的配置详解
  2. 笔趣看小说全部章节爬取实战
  3. django 在保存数据前进行数据校验
  4. Qt Creator将QML模块与插件一起使用
  5. 中国移动:面向全业务运营的安全管理平台
  6. [react-router] React-Router的<Link>标签和<a>标签有什么区别
  7. PHP 文件与目录操作
  8. zabbix4监控mysql_Zabbix4监控Mysql5.7
  9. 前端 获取当前页面服务器ip_fiddler获取响应时间以及服务器IP
  10. 大数据可视化应用在哪些方面
  11. 常用软件版本查看Windows下
  12. 系统辨识工具箱使用指南
  13. 腾讯汤道生:开放中台能力助力产业升级
  14. 两张图片放在一起有条白线_为什么图片上加两条白线就可以有3d效果?
  15. 隐藏与显示桌面上的单个图标
  16. 举例说明计算机在现实应用中的作用,,谈一谈‘‘九思’’述说的内容在今天有什么现实意义?...
  17. Android应用闪退异常java.lang.RuntimeException: Unable to instantiate application
  18. 【Robomaster】电控入门手册
  19. 数据读取与数据扩增理解
  20. ChatGPT基础知识系列之零样本学习( Zero-Short learning)

热门文章

  1. jQuery动画stop()用法
  2. java免安装版配置_Java环境变量一键配置
  3. android 缩放组件,Android控件之ZoomControls缩放控件
  4. Bean获取Spring容器
  5. 【渝粤教育】广东开放大学 环境与资源保护法 形成性考核 (56)
  6. scanf 与 scanf_s
  7. 【学亮IT手记】Java 8新特性实例介绍
  8. Android 原生 MediaPlayer 和 MediaCodec 的区别和联系(二)
  9. vue个人学习(三)----组件
  10. [转] 各种数据类型转换