tomcat常用于提供servlet/jsp容器服务,简单方便、使用高效。但是tomcat处理静态文件资源的性能不足(应该是serviece部分),同时,如果用户直接与tomcat进行http的连接获取静态资源(连接器connector部分),相对而言就更慢了(http协议基于文本,相对“基于二进制的协议”而言性能较低,后者例如ajp13协议)。

因此,如果以“使用tomcat提供servlet/jsp容器服务”为前提,又希望使其中的静态文件资源的请求性能好一点时,就要用到“tomcat中的ajp”(此处ajp指对接ajp13协议的连接器)。下面通过流程说明ajp意义及优势,而8009只是默认的ajp服务端口,没什么特别的。网上各方常用图如下:

上图的使用逻辑不赘述。客户1的请求就是普通servlet资源的请求,重点说明为什么这么处理客户2的请求,即优势。客户2请求静态资源:首先,此时tomcat提供的是“基于AJP13协议”的ajp服务(常用8009端口),该协议基于二进制的TCP传输协议,基于包的,因此截图中间的HTTP服务器与tomcat之间保有一个持久存在的连接,省了“每次新请求时重新创建socket”的麻烦,且两者通信基于AJP13因此速度快效率高;其次,tomcat对静态资源缺少优化,而HTTP服务器可以对获得的资源进行优化,比如缓存之类对。综上,客户2获取一个新的静态资源时,相比直接连接tomcat,从“http + tomcat处理”变成了“http + 中间http服务器处理 + AJP + tomcat处理”,看似流程多了点,但前后两个“http”传输的“连接器部分”并不相同,性能速度不确定;但后续该客户2或其他客户再次获取该静态文件资源时,有可能由中间http服务器直接处理了,注意Apache服务器处理静态文件资源时明显优于tomcat处理静态文件资源的。因此,整体而言,静态文件资源的处理性能提升了。

但是,上述方案只是一种过往的经验总结,用于解释ajp功能。实际中,能“代理ajp”的上述中间http服务器不多也不常用(比如截图Apache服务器与IIs服务器),而已经有其他方案处理优化该场景需求,且tomcat的ajp也暴露了很多漏洞,所以说只是经验、不建议使用。

因此,最终结论是别用ajp,tomcat中的ajp服务在server.xml中注释/禁掉把。

(学习网上帖子时看到热加载与热部署区别:前者监听所有文件改变,变时局部加载不清空session与内存,有可能内存溢出,有可能ide出bug;后者重新部署,清空session释放内存——前者多用于研发,后者相对服务器而言)

tomcat中ajp及8009端口用处相关推荐

  1. java 8009_tomcat大神求教:8080,8009,8443,8005都是什么端口,apache与tomcat通信是靠8009端口...

    展开全部 远程停服务抄端口32313133353236313431303231363533e59b9ee7ad9431333433633436百 其中度8080为知HTTP端口,8443为HTTPS端 ...

  2. Tomcat中配置多个端口

    在tomcat的conf/server.xml中,配置多个端口,如下: <?xml version="1.0"?> <!--应用1,端口port="80 ...

  3. [转]Tomcat中8005/8009/8080/8443端口的作用

    8005:关闭tomcat进程所用.当执行shutdown.sh关闭tomcat时就是连接8005端口执行"SHUTDOWN"命令--由此,我们直接telnet8005端口执行&q ...

  4. java 8009_[转]Tomcat的8009端口AJP的利用

    备注下:Tomcat最主要的功能是提供Servlet/JSP容器,尽管它也可以作为独立的Java Web服务器,它在对静态资源(如HTML文件或图像文件)的处理速度,以及提供的Web服务器管理功能方面 ...

  5. Tomcat的8005、8009,8080端口解释

    8005端口是用来关闭TOMCAT服务的端口. Tomcat服务器通过Connector连接器组件与客户程序建立连接,Connector组件负责接收客户的请求,以及把Tomcat服务器的响应结果发送给 ...

  6. tomcat与iis公用80端口(已经发布.net项目现在开发Java项目时tomcat在eclipse中localhost:8080打不开问题)...

    在开发过.net项目的电脑上安装eclipse配置tomcat运行时打不开页面问题描述,这也是本人亲生经历,找了好多资料网上大多都是tomcat配置问题描述,今天突然想到是不是IIS的问题,果然上网一 ...

  7. Tomcat中配置多个工程使用不同端口访问问题

    因为没有深入的去学习Tomcat,所以下面的方法只是简单的解决了这个问题. 第一种方式是: Eclispse使用的是安装版的Tomcaat,项目直接发布到Tomcat/webapps目录下. 直接去T ...

  8. tomcat中server.xml文件详解

    原文:http://www.cnblogs.com/starhu/p/5599773.html Tomcat Server的结构图如下: 该文件描述了如何启动Tomcat Server <Ser ...

  9. Tomcat优化(AJP 执行器 运行模式 参数优化)

    Tomcat优化 tomcat优化 登录tomcat server-status 一.优化部署-禁用AJP链接 二.优化部署-执行器(线程池) 三.优化部署-3种运行模式 结论:tomcat8以下用n ...

最新文章

  1. vscode+eslint自动格式化vue代码的方法
  2. Maven学习(一)——Maven入门
  3. LeetCode 202 -- python 计算 happy number
  4. GDCM:gdcm::StreamImageWriter的测试程序
  5. Java是值传递还是引用传递?
  6. preventDefault() 方法 取消事件的默认动作
  7. UVA11347 Multifactorials【阶乘+组合】
  8. java并发编程实战读书笔记2
  9. 下载faceScrub人脸数据库(单线程版本)
  10. 利用python进行数据加载和存储
  11. 塞班系统 微信 服务器忙,微信QQ遭停用,塞班系统部分机型彻底不能登陆
  12. kewail node 短信_node.js短信接口_node.js发短信_node.js短信验证码_验证码短信代码示例_互亿无线...
  13. 计算机视觉-OpenCV入门讲解
  14. 电话面试的技巧和注意事项
  15. Exchange2013中POP3和IMAP4
  16. MATLAB中help的使用
  17. ORACLE错误一览表(转)
  18. 「app开发价格」开发一个app到底需要多少钱
  19. 如何查询自己的个人征信报告
  20. 毫米和像素怎么换算_将mm换算为px (毫米换算为像素)

热门文章

  1. 写一个预测双色球的代码
  2. Cocos Creator 3.x 动态加载 龙骨动画
  3. Jessica‘s Reading Problem(尺取法)
  4. 启动mysql数据库是红色_mysql启动故障
  5. 两台电脑usb直连 linux,两台电脑怎么传文件没有网线(两台电脑usb直连)
  6. JfreeChart 生成图表-雷达图
  7. audioread.exceptions.NoBackendError in librosa
  8. python后端开发技术论坛_自学 Python后端开发 到什么程度可以找工作?
  9. 【芯片前端】关于set_input_delay/set_output_delay慢信号约束到快时钟的思考
  10. JSDoc的常用注释规范