图说springboot整合jetty-Response

一张巨无霸图

在这里插入图片描述

调用链

Server.handle->JettyEmbeddedWebAppContext.doScope->ContextHandler.doScope-SessionHandler.doScope->JettyEmbeddedServletHandler.doScope->ServletHandler.doScope->JettyEmbeddedWebAppContext.doHandle->ContextHandler.doHandle->JettyEmbeddedServletHandler.doHandle->ServletHandler.doHandle->ServletHolder.handle(prepare->doFilter->handle)->DispatcherServlet.service->FrameworkServlet.service->HttpServlet.service(doGet|doHead|doPost|doPut|doDelete|doOptions|doTrace)->FrameworkServlet.doGet->DispatcherServlet.doService->doDispatch->HandlerExecutionChain.applyPreHandle with handler [public java.lang.String com.dianwoba.dispatch.grafana.service.web.controller.IndexController.index(org.springframework.ui.Model,javax.servlet.http.HttpSession)] and 2 interceptors->HandlerInterceptor.preHandle->RequestMappingHandlerAdapter.handle->AbstractHandlerMethodAdapter.handle->RequestMappingHandlerAdapter.handleInternal->invokeHandlerMethod->getModelAndView->WebContentGenerator.prepareResponse->HandlerExecutionChain.applyPostHandle->HandlerInterceptor.postHandle->DispatcherServlet.processDispatchResult->ThymeleafView.render->renderFragment->SpringTemplateEngine.process->TemplateManager.parseAndProcess->OnCommittedResponseWrapper S a v e C o n t e x t P r i n t W r i t e r . f l u s h − > R e s p o n s e W r i t e r . f l u s h − > H t t p W r i t e r . f l u s h − > H t t p O u t p u t . w r i t e − > H t t p C h a n n e l O v e r H t t p . w r i t e − > H t t p C h a n n e l . w r i t e − > s e n d R e s p o n s e − > n o t i f y R e s p o n s e B e g i n − > H t t p C o n n e c t i o n ( t r a n s p o r t ) . s e n d − > I t e r a t i n g C a l l b a c k ( H t t p C o n n e c t i o n SaveContextPrintWriter.flush->ResponseWriter.flush->HttpWriter.flush->HttpOutput.write->HttpChannelOverHttp.write->HttpChannel.write->sendResponse->notifyResponseBegin->HttpConnection(_transport).send->IteratingCallback(HttpConnection SaveContextPrintWriter.flush>ResponseWriter.flush>HttpWriter.flush>HttpOutput.write>HttpChannelOverHttp.write>HttpChannel.write>sendResponse>notifyResponseBegin>HttpConnection(transport).send>IteratingCallback(HttpConnectionSendCallback).iterate->HttpConnectionKaTeX parse error: Expected group after '_' at position 238: …er.updateState(_̲_WRITING, Pendi…SendCallback).succeeded(PENDING)->IteratingCallback.processing->HttpConnection S e n d C a l l b a c k . p r o c e s s − > S C H E D U L E D − > H t t p G e n e r a t o r . g e n e r a t e R e s p o n s e 判 断 刷 新 已 完 成 − > D O N E ( 返 回 A c t i o n . S U C C E E D E D ) − > I t e r a t i n g C a l l b a c k ( H t t p C o n n e c t i o n SendCallback.process->SCHEDULED->HttpGenerator.generateResponse 判断刷新已完成->DONE(返回Action.SUCCEEDED)->IteratingCallback(HttpConnection SendCallback.process>SCHEDULED>HttpGenerator.generateResponse>DONE(Action.SUCCEEDED)>IteratingCallback(HttpConnectionSendCallback).State.PROCESSING(Action.SUCCEEDED)->IteratingCallback(HttpConnection S e n d C a l l b a c k ) . o n C o m p l e t e S u c c e s s − > H t t p C h a n n e l SendCallback).onCompleteSuccess->HttpChannel SendCallback).onCompleteSuccess>HttpChannelCommitCallback.succeeded->SharedBlockingCallback$Blocker.succeeded->HandlerExecutionChain.triggerAfterCompletion->HandlerInterceptor.afterCompletion->FrameworkServlet.publishRequestHandledEvent->SessionHandler.complete->HttpChannel(HttpChannelOverHttp).notifyAfterDispatch->loop(状态COMPLETE)->Response.closeOutput->HttpChannelState.onComplete->HttpChannel(HttpChannelOverHttp).onCompleted->HttpConnection(_transport).onCompleted

总结

  1. Jetty通过HttpGenerator与Servlet对接,该类中提供从DIO中的字节数据转换为Request(generateRequest),Response(generateResponse)
  2. 在数据某个下标处写入失败后,从此下标处后面的所有字节数据全部重传。Go-Back-N方式
  3. 虽然channel支持全双工,但是同步响应的情况下jetty在处理一次写数据过程中出现异常时(处于pending状态),下次数据进来时会先将上次pending剩余的字节数据写入完成后(或再次失败),再继续读取进来的新数据。
  4. jetty的Acceptor默认情况下为1-4个,线程池200。
  5. 每个ContainerLifeCycle管理自己容器的beans的生命周期。ContainerLifeCycle之间容器管理的bean相互独立的,但容器之间存在依赖关系
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值