首页 > 解决方案 > 如何在 servlet 中连续循环等待?

问题描述

我正在开发一个基于 servlet 的应用程序。一种情况是客户端从数据库中请求一些数据,这些数据以 html 的形式发回。客户端将修改此数据,然后将其发送回服务器。现在转折开始了。没有一个客户。所以多个客户端可以请求相同的数据。所以我正在做的是,当第一个客户端发出请求时,这个请求被存储在某个地方,这样当下一个用户发出相同的请求时,他就会被拒绝数据。

现在假设第一个用户获取数据而第二个用户被拒绝。现在,当第一个用户在允许他修改数据的 html 页面上时。我想以固定的时间间隔发送连续的 javascript 异步发布请求,以通知服务器客户端处于活动状态。

在服务器端,我需要一个线程或可以循环等待javascript异步请求的东西,如果在固定时间内未收到请求,则线程删除保存的请求,以便将来对数据的请求将被接受.

我已经搜索了一整天,并查看了诸如异步 servlet、ServletContext 侦听器和 scheduleExecutorservice 之类的东西。我不想使用scheduledExecutorService,因为它是在应用程序启动时调用的,我不想这样做,因为这种特定情况是代码的一小部分,为了处理它,我不想一直运行。我需要一些后台服务,即使在服务器返回请求的数据后也能继续运行。

标签: javaservlet-3.0

解决方案


Servlet 无法满足您的要求,因此您应该使用WebSockets.
根据我的理解,您正在尝试从服务器推送数据,因此您需要一个push架构而不是pull架构(Servlet 基于拉架构)。
Java 原生支持WebSockets
您可以找到一些关于如何WebSockets在 Java Web 应用程序中使用的教程。
这是基本WebSockets 教程的链接。

希望这可以帮助


推荐阅读