如何克隆 Servlet 容器提供的分离的 HttpServletRequest 和 HttpServletResponse?

2023-11-26

我想实现以下逻辑: 当我在主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(使用前将#替换为@)

如何克隆 Servlet 容器提供的分离的 HttpServletRequest 和 HttpServletResponse? 的相关文章

随机推荐

  • 您的连接不安全 - 使用 Selenium.WebDriver v.3.6.0 + Firefox v.56

    我正在编写测试硒 C 我面临一个重要问题 因为当我使用安全连接测试我的网站时没有找到解决方案 HTTPS 我在 stackoverflow 上找到的所有解决方案都已过时或不起作用 我尝试练习以下问题的所有解决方案 Selenium 为什么将
  • 如何使用java获取本地系统的子网掩码?

    你如何获得Subnet使用Java的本地系统的掩码地址 本地主机接口的第一个地址的网络掩码 InetAddress localHost Inet4Address getLocalHost NetworkInterface networkIn
  • 如何从 QListWidget 中删除项目

    每次我需要从 QListWidget 列表中删除 Item 时 我都会陷入使用 myItem hide 方法的困境 隐藏项目而不是删除 移除会使事情变得不必要的复杂 如果您向我展示如何从 ListWidget 中永久删除项目 我将不胜感激
  • Matplotlib:Times New Roman 显得粗体

    由于某种原因 当我在我的应用程序中使用 Times New Roman 时mpl情节显得粗体 其他字体都OK 这是一个最小的示例和结果 在 Word 文档中 用于与我期望的 Times New Roman 的外观进行比较 import ma
  • 我无法理解这一行 - 取消引用私有成员变量的地址还是什么?

    我不久前问过一个问题关于访问STL适配器的底层容器 我得到了一个非常有帮助的答案 template
  • 无法从 TypeScript 中的文件加载类

    我有一堂课 看起来像这样 export module GameModule export class Game private boardContainer HTMLElement private board number construc
  • 如何获取在其声明中实际键入的变量名称? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 中查找传递给函数的变量名 下面的类包含字段城市 我需要动态确定在类声明中键入的字段名称 即我需要从对象城市的实例中获取字符串 city 我尝试通过检查 DoSomething 中的 Type
  • 将 const 指针引用绑定到非常量指针

    int val2 38 int ptr val2 const int ptrRef ptr ERROR int i 92 int ref i i const int ref i2 ref i OK 为什么我不能有一个引用非常量指针的常量引用
  • Java XML处理实体问题?

    当我尝试运行 java 程序时出现以下错误 它应该读取 xml 文件并打印出一些内容 据我了解 有一个未引用的实体不属于 xml 标准的一部分 所以我的问题是 我该如何解决这个问题 Thanks Fatal Error subject xm
  • Java中n++ VS ++n的区别

    我的 Java 老师说最好使用 n 而不是 n 我没有看到这背后的逻辑 有人知道吗 n增加该值并返回新值 n 增加值并返回old one Thus n 需要额外的存储空间 因为它必须跟踪旧值 以便在增量后可以返回它 我预计这两者之间的实际差
  • 在一张表上创建多对多

    Flask SQLAlchemy 给出了example如何创建多对多关系 它是在两个不同的表之间完成的 是否可以在同一个表上创建多对多关系 例如 一个姐妹可以有很多姐妹 而她也可以有很多姐妹 我努力了 girl sister map db
  • 从 git diff 中排除目录

    我想知道如何从 Git diff 中排除整个目录 在本例中为 spec 我正在使用 git diff 命令为我们的整个软件版本创建一个差异 然而 规格的更改与此过程无关 只会带来麻烦 现在我知道我能做到 git diff previous
  • MySQL两列时间戳默认NOW值ERROR 1067

    我有如下所示的表格 为了解决一个默认问题nowMySQL的列限制我使用了如图所示的提示here CREATE TABLE IF NOT EXISTS mytable id INT NOT NULL AUTO INCREMENT create
  • 使用另一个节点版本重新编译节点依赖项

    我想安装一些依赖项 在本例中安装 node pty 但是当我运行它时 他们给了我这个错误 错误 模块 home dev Documents project node web kit node modules node pty build R
  • 为什么结构/联合兼容性需要标记和名称相等?

    C99标准第6 2 7 1节中有以下语言 如果它们的标签和成员满足以下要求 则在单独的翻译单元中声明的两个结构体 联合或枚举类型是兼容的 如果其中一个使用标签进行声明 则另一个应使用相同的标签进行声明 如果两者都是完整类型 则适用以下附加要
  • 根据列类型对数据框中的变量进行子集化

    我需要根据列类型对数据帧进行子集化 例如 从具有 100 列的数据帧中 我只需要保留那些具有类型的列factor or integer 我已经编写了一个简短的函数来执行此操作 但是 CRAN 上有没有更简单的解决方案或一些内置函数或包 我当
  • 当 Java 8 Stream 抛出 RuntimeException 时,预期的行为是什么?

    当遇到一个RuntimeException在流处理期间 流处理是否应该中止 应该先完成吗 是否应该重新抛出异常Stream close 异常是按原样重新抛出还是被包装 JavaDoc 的Stream和包装java util stream对此
  • 如何使用中文版 mPDF

    我正在使用 mPDF 将表单输入数据保存到 PDF 对于英语来说 它工作得很好 任何人都可以使用此代码将 HTML 表单数据保存为 PDF 问题 为了满足我的项目要求 我需要使用中文 我当前的代码不适用于此 表单 html
  • Android GridView 按钮单击处理程序

    我有一个安卓GridView与ImageView TextView和两个Button s 网格看起来很好 但我发现很难处理其中的按钮事件GridView 我是安卓新手 任何帮助 将不胜感激 Thanks 如果您希望按钮 以及其他任何内容 在
  • 如何克隆 Servlet 容器提供的分离的 HttpServletRequest 和 HttpServletResponse?

    我想实现以下逻辑 当我在主servlet的doService方法 在主web容器线程中 收到HttpServletRequeset和HttpServletResponse时 我启动A B C三个线程 由我自己的程序管理的线程 以并行模式处理