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方法进行)
  • 相关阅读:
    es5中的类 继承 (原型链继承,寄生继承,组合继承)
    typeScript类型
    javaScript 不可思议问题
    javaScript 运算符(操作符)
    window.a 与 window[a]区别
    Event Loop事件循环
    生产环境vue-router模式为history导致页面404
    Axios请求添加token
    vue页面利用keep-alive实现页面快速缓存
    js原型链原理
  • 原文地址:https://www.cnblogs.com/highriver/p/1734349.html
Copyright © 2011-2022 走看看