zoukankan      html  css  js  c++  java
  • 关于Jetty7 Continuation API的使用

    由于Struts2的Action都继承自ActionSupport,客户端的每一次请求都会调用该类的execute方法并返回一个代表JSP页面的String,这是一种有求立即响应的模式.
    而对于Continuation,如果资源比较耗时,没有准备好,则将当前request suspend到一个Queue中,并且不返回response(什么时候返回:在资源就绪时,异步通知,比如通过httpclient的onResponseComplete事件),然后将分配给请求的Servlet处理线程释放回线程池. 这是一种有求不立即响应的模式(何时构造Response返回内容给客户端由Server端根据远程请求决定).
    由于这二种模式的差别,导致扩展Action,支持Continuation很难做到:Action实际上是对Servlet API的doGet,doPost进行了层层封装.对外暴露仅是execute方法.
    解决的办法:
    1.全部使用Servlet替代Struts2.但是由于现有项目已经使用struts2,并且页面大量使用struts的标签.改造工作量较大.只能做一个平衡,按照2/8原则对经常发送请求的20%做改造.
    另外注意到struts2中的pause函数.
    pause函数可以支持一个有意义的客户端与服务器之间的对话过程,而不是每次问答都是一个新的请求. 它支持多求一应的模式(其实是在execute方法中通过多次调用pause方法进行)
  • 相关阅读:
    编译和和运行amor
    用好C语言的中库,系统错误的处理
    C语言中的宏
    时隔多年,再次实现的链表
    脚本更改桌面背景
    python爬虫 一个security的RSA加密爬虫
    mysql 8.0版本
    mysql5.7的并行复制
    kinshard中间件问题
    Springboot2-@Transactional 事务不生效
  • 原文地址:https://www.cnblogs.com/highriver/p/1734349.html
Copyright © 2011-2022 走看看