java - 如何在 servlet 中连续循环等待?
问题描述
我正在开发一个基于 servlet 的应用程序。一种情况是客户端从数据库中请求一些数据,这些数据以 html 的形式发回。客户端将修改此数据,然后将其发送回服务器。现在转折开始了。没有一个客户。所以多个客户端可以请求相同的数据。所以我正在做的是,当第一个客户端发出请求时,这个请求被存储在某个地方,这样当下一个用户发出相同的请求时,他就会被拒绝数据。
现在假设第一个用户获取数据而第二个用户被拒绝。现在,当第一个用户在允许他修改数据的 html 页面上时。我想以固定的时间间隔发送连续的 javascript 异步发布请求,以通知服务器客户端处于活动状态。
在服务器端,我需要一个线程或可以循环等待javascript异步请求的东西,如果在固定时间内未收到请求,则线程删除保存的请求,以便将来对数据的请求将被接受.
我已经搜索了一整天,并查看了诸如异步 servlet、ServletContext 侦听器和 scheduleExecutorservice 之类的东西。我不想使用scheduledExecutorService,因为它是在应用程序启动时调用的,我不想这样做,因为这种特定情况是代码的一小部分,为了处理它,我不想一直运行。我需要一些后台服务,即使在服务器返回请求的数据后也能继续运行。
解决方案
Servlet 无法满足您的要求,因此您应该使用WebSockets
.
根据我的理解,您正在尝试从服务器推送数据,因此您需要一个push
架构而不是pull
架构(Servlet 基于拉架构)。
Java 原生支持WebSockets
您可以找到一些关于如何WebSockets
在 Java Web 应用程序中使用的教程。
这是基本WebSockets 教程的链接。
希望这可以帮助
推荐阅读
- discord.js - 我正在编写我的第一个不和谐机器人,但创建有限制的角色很奇怪
- html - SVG 只有 1 条无限线
- sql - 按产品分组的 SQL 查询,在一列中计算两个变量
- c++ - 这段代码是什么?为什么它有效?C++
- regex - 仅当不在行首附近时才匹配正则表达式
- pine-script - 如何计算 pinescript 中特定日期范围的枢轴级别?
- c# - 应用程序在系统启动时找不到配置文件
- c - “半释放”一块内存来缩小它是否安全?
- javascript - Wordpress 未加载保存为页面后元的 Javascript
- xcode - xcode 可执行文件无法访问作为项目一部分的 .txt 文件