- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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/
我是一名优秀的程序员,十分优秀!