gpt4 book ai didi

java - Java Web 应用程序和 Web 服务之间的线程间通信

转载 作者:行者123 更新时间:2023-11-29 08:05:37 25 4
gpt4 key购买 nike

我在 inter-thread communication between java application and jax-ws web service 中发布的原始问题的一些前提发生了变化(我也在简化问题以使其更容易理解(并因此得到回答)......希望版主没问题。)

Web 服务线程 (THREAD-1) 向套接字发出请求并进入休眠状态等待响应。另一个监听器线程 (THREAD-2)(作为单独的 Web 应用程序运行,一旦它收到响应)必须将 THREAD-1 从 sleep 中唤醒。

我该怎么做(以推送通知的方式)?

他们都可以访问数据库表。 THREAD-1 可以在进入 hibernate 状态之前将其唯一标识放入表中。 THREAD-2,一旦收到响应并确定它属于 THREAD-1,它就会更新数据库表中的相应行。现在 THREAD-1 可以对数据库表进行轮询(定期)以检查响应是否已到达。

但我希望以推送通知的方式进行。当响应到达时,THREAD-1 应该立即得到通知,而不必每隔几秒轮询一次。

最佳答案

如果您的后端请求快速完成并且您没有大量的客户端请求要处理,您可以让网络服务等待通过它刚打开的同一个套接字的响应。它可以阻止等待读取响应。

但是,如果您可以访问 Servlet 3.0(例如 Tomcat 7),则可以使用 asynchronous HTTP requests .它允许您在不响应客户端请求的情况下将处理 Web 服务客户端的线程释放回池中。当来自后端服务的响应消息到达时,从 servlet 容器中获取适当的 Web 服务客户端请求,并将最终响应发送回 Web 服务客户端。

关于java - Java Web 应用程序和 Web 服务之间的线程间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11485827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com