jetty的工作方式(作为服务器)

本文介绍了Jetty作为服务器的工作方式,重点探讨了基于AJP协议和NIO模型的实现。在AJP模式下,Jetty通过Ajp13SocketConnector创建Ajp13Connection处理AJP协议。而在NIO模式中,Jetty使用Selector进行非阻塞I/O,提高效率。文章还阐述了Jetty如何处理HTTP请求,强调了Handler链在请求处理中的角色。
摘要由CSDN通过智能技术生成

基于 AJP 工作

通常一个 web服务站点的后端服务器不是将 Java 的应用服务器直接暴露给服务访问者,而是在应用服务器,如 Jboss 的前面在加一个 web 服务器,如 Apache或者 nginx,我想这个原因大家应该很容易理解,如做日志分析、负载均衡、权限控制、防止恶意请求以及静态资源预加载等等。

下图是通常的 web 服务端的架构图:

图 7. Web 服务端架构(查看大图


这种架构下 servlet引擎就不需要解析和封装返回的 HTTP 协议,因为 HTTP 协议的解析工作已经在 Apache 或 Nginx 服务器上完成了,Jboss只要基于更加简单的 AJP 协议工作就行了,这样能加快请求的响应速度。

对比 HTTP协议的时序图可以发现,它们的逻辑几乎是相同的,不同的是替换了一个类 Ajp13Parserer 而不是 HttpParser,它定义了如何处理 AJP协议以及需要哪些类来配合。

实际上在 AJP 处理请求相比较HTTP 时唯一的不同就是在读取到 socket 数据包时,如何来转换这个数据包,是按照 HTTP 协议的包格式来解析就是 HttpParser,按照 AJP协议来解析就是 Ajp13Parserer。封装返回的数据也是如此。

让 Jetty 工作在 AJP协议下,需要配置 connector 的实现类为 Ajp13SocketConnector,这个类继承了 SocketConnector 类,覆盖了父类的newConnection 方法,为的是创建 Ajp13Connection 对象而不是 HttpConnect

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值