jetty ajp实现分析

Ajp13Parser用于解析web服务器传过来的输入流,对于每个AJP连接都有一个对应的Ajp13Parser对象。Ajp13Generator用于产生输出流,并发送给web服务器,对于每个AJP连接都有一个对应的Ajp13Generator对象。

 

Ajp13Parser有4个状态,分别是STATE_START、STATE_END、STATE_AJP13CHUNK_START、STATE_AJP13CHUNK。

 

STATE_START是初始化状态,如果Ajp13Parser是这个状态,则是空闲的。在调用Ajp13Parser的reset方法后,会恢复为这个状态。

 

STATE_END是结束状态,如果Ajp13Parser是这个状态,则代表已处理完一个请求。

转入情况1:如果输入流结束了并且是STATE_AJP13CHUNK_START或STATE_AJP13CHUNK状态时,会转为STATE_END状态。

转入情况2:如果是STATE_AJP13CHUNK_START或STATE_AJP13CHUNK状态,并且已经读入了一个请求的全部内容后,会转为STATE_END状态。

转入情况3:如果在处理一个HTTP请求时,这个HTTP请求没有内容信息时,则转入STATE_END状态。

转入情况4:如果是STATE_AJP13CHUNK_START状态,并且读取了一个空的body数据包后,转入STATE_END状态。

 

STATE_AJP13CHUNK_START是开始接收body数据状态。

转入情况1:如果在处理一个HTTP请求时,body的长度未知时,转入STATE_AJP13CHUNK_START状态。

转入情况2:如果在处理一个HTTP请求时,有body时,则转入STATE_AJP13CHUNK_START状态。

转入情况3:如果在STATE_AJP13CHUNK状态,并且读取到一个完整的body数据包时,则转入STATE_AJP13CHUNK_START状态。

 

STATE_AJP13CHUNK是正在读取body数据时的状态。

转入情况:在至少读取了body数据包头后,转入STATE_AJP13CHUNK状态。

 

jetty中的ajp实现好像有问题啊,body数据包头长度是4啊,jetty中为什么判断为6?需要排查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值