我想实现以下逻辑:
当我在主servlet的doService方法(在主web容器线程中)收到HttpServletRequeset和HttpServletResponse时,我启动A、B、C三个线程(由我自己的程序管理的线程)以并行模式处理其他servlet,然后加入每个响应从主线程中的这些 servlet 中,如果我自己的线程之一(假设 A 线程)工作缓慢,则主线程将完成,因此主响应将返回给用户。线程必须继续正常工作,稍后我会在浏览器端使用AJAX请求A线程的响应。
所以,我想克隆Servlet容器提供的HttpServlettRequest和HttpServletResponse,并且克隆的请求和响应必须分离(当容器的 HttpServletTrequest 和 HttpServletResponse 完成时,克隆的请求和响应仍然可以正常工作).
从我的代码来看,克隆的请求和响应的行为必须与容器的行为相同。它可以被遵循和包含。
任何想法?
非常感谢!
L.J.W
可以通过 HttpServletResponseWrapper 类克隆 HTTP 请求和响应http://docs.oracle.com/javaee/1.3/api/javax/servlet/http/HttpServletResponseWrapper.html。您可以在 Sun 文档中找到使用示例https://web.archive.org/web/20120626033905/http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets8.html.
请注意,这是(当时)Sun 解决此问题的解决方法,因为从未计划您可以在提交之前修改请求和响应信息。
您可以使用包装器来复制 Http 信息并将其传递给不同的线程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)