【问题标题】:Java servlet, respond after recieving each request before queuingJava servlet,在排队前收到每个请求后响应
【发布时间】:2015-12-16 13:05:05
【问题描述】:

我正在使用使用 Apache Tomcat 的 Java servlet。

我已经配置了一个线程池并且正在处理每个请求。 我的页面同时接受了许多 GET 请求,我想知道是否可以在每个 get 请求之后在任何逻辑发生之前响应服务器?

所以服务器给了我一个请求 -> 在我开始排队之前,我会回答“发送另一个好”或“发送另一个不好”。

任何帮助将不胜感激!

编辑

对不起,写的很糟糕:(

我要的是一种将标头发送到客户端的方法(在这种情况下,它是一个向我发送大量请求的服务器)。根据我收到的信息,响应只是 200 或错误。

我的程序在做什么: 我的 servlet 收到来自一个客户端的大量 GET 请求。 (超过 100,000)我使用 tomcat 来排队并放入线程池。然后将其分配给一个工作线程,该线程对其进行处理并将其放入数据库中。

有人告诉我要做的是向该服务器发送一个请求,说“好的,收到它”。我想我可以使用标头响应,但我没有该客户端的 URL(并且客户端可以针对不同的广告系列进行更改)。所以想知道发送该响应的最佳方式是什么。

在做了更多研究之后,我认为我正在寻找的是 ServletOutputStream。

response.setContentType("text/html");
    ServletOutputStream output = response.getOutputStream();

    output.flush();
    output.close();

使用 servlet 输出流在哪里设置 <head><body> 标签?然后插入标题响应。

【问题讨论】:

  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。请参阅How to Ask 页面以获得澄清此问题的帮助。
  • 至少这些点我不清楚:服务器给你的请求?不是客户的要求吗? “逻辑”是什么意思?你在说什么排队?

标签: java tomcat servlets


【解决方案1】:

简单的答案是“确定”。

如果这些是从网页获取网页的请求,请包含刷新计时器并发回一些可用于识别首次请求和 I-requested-earlier-are 之间差异的令牌- 你完成了请求。在这种情况下,可以通过元刷新标签设置刷新计时器。

如果获取请求是 REST API 的一部分,那么您可以在协议中定义“得到它并且我正在工作”。例如,返回 202 表示“完成但未完成”,返回 200 表示“完成”。与 html 页面一样,考虑将一些令牌与 202 一起发回,以标识待处理的请求。

【讨论】:

    猜你喜欢
    • 2022-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 2016-10-27
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多