java应用程序与jax ws web服务之间的线程间通信

java应用程序与jax ws web服务之间的线程间通信,java,multithreading,web-services,jax-ws,Java,Multithreading,Web Services,Jax Ws,我的jax-ws-web服务(在被客户机请求击中后)向后端遗留平台发送一个请求(通过套接字),然后等待20秒等待响应 在发出该请求之前,它会用其唯一的事务号更新一个表 一个单独的侦听器线程(独立java应用程序)正在该套接字上等待响应,每个响应中都有事务号,以标识与之关联的请求(以前发送的) 这个独立的java应用程序如何与web服务中等待其响应的线程通信,并继续其处理 目前,我认为侦听器线程可以更新表(基于事务号),以指示响应已经到达。web服务线程可以在数据库中保持轮询(每2秒检查一次),以

我的jax-ws-web服务(在被客户机请求击中后)向后端遗留平台发送一个请求(通过套接字),然后等待20秒等待响应

在发出该请求之前,它会用其唯一的事务号更新一个表

一个单独的侦听器线程(独立java应用程序)正在该套接字上等待响应,每个响应中都有事务号,以标识与之关联的请求(以前发送的)

这个独立的java应用程序如何与web服务中等待其响应的线程通信,并继续其处理

目前,我认为侦听器线程可以更新表(基于事务号),以指示响应已经到达。web服务线程可以在数据库中保持轮询(每2秒检查一次),以确定响应是否到达


我正在寻找一些推送通知在这种情况下,而不是轮询。当响应到达时,如何通知web服务线程

假设为请求提供服务并发出套接字请求的线程和接收套接字响应的线程都在同一个jvm中:
您可以使用标准的Java等待/通知模式。
.

基本上,您的req/socket线程将在单例(或类似)映射中创建一个对象(“锁”对象),密钥是您的唯一事务号。然后该线程将等待该对象。这将阻止该线程,直到另一个线程对该事务id的锁对象执行通知。
注意锁对象可以只是一个对象。
您还可以在等待上设置一个超时,以避免永远等待

然后,您的另一个线程将获取事务id的锁对象,并对其执行通知。这将取消阻止第一个线程。
如果第二个线程没有为其事务id找到锁对象,则说明出现了问题,您必须记录错误或类似情况


Ps由于映射是共享资源,您可能需要ConcurrentHashMap。否则,您可能会遇到多个线程同时更新的问题。

假设为请求提供服务并发出套接字请求的线程以及接收套接字响应的线程都在同一个jvm中:
您可以使用标准的Java等待/通知模式。
.

基本上,您的req/socket线程将在单例(或类似)映射中创建一个对象(“锁”对象),密钥是您的唯一事务号。然后该线程将等待该对象。这将阻止该线程,直到另一个线程对该事务id的锁对象执行通知。
注意锁对象可以只是一个对象。
您还可以在等待上设置一个超时,以避免永远等待

然后,您的另一个线程将获取事务id的锁对象,并对其执行通知。这将取消阻止第一个线程。
如果第二个线程没有为其事务id找到锁对象,则说明出现了问题,您必须记录错误或类似情况


Ps由于映射是共享资源,您可能需要ConcurrentHashMap。否则,您可能会遇到多个线程同时更新它的问题。

我们使用内存中的数据库表,而不是map,因为它必须存储一个大表(包含大量信息列),并且必须可搜索。现在回到您的建议(我喜欢它,只是想根据我的需要调整它)——假设请求线程是一个web服务,第二个线程是一个独立的java应用程序。。他们是否仍然可以使用线程等待/通知模式进行通信…请求线程将由app server管理(作为web服务),第二个线程将不受管理(作为独立java应用程序)。。。在本例中,您是否通过您建议的模式看到他们之间的通信有任何问题..我进一步研究了一些,发现了这个链接,它解释/建议将独立java应用程序移动到web应用程序。。我认为这对我来说是朝着正确方向迈出的一步,通过这种方式,web服务线程(发出请求并休眠等待响应的线程)和中断线程(接收响应并唤醒休眠线程的线程)这两个托管线程都在app server控制下吗?我想知道web应用程序线程唤醒等待事件发生的web服务线程的最佳方式是什么。。(在本例中是response to Arrival)我们使用的不是map,而是内存中的数据库表,因为它必须存储一个大表(有很多列的信息),而且它必须是可搜索的。现在回到您的建议(我喜欢它,只是想根据我的需要调整它)——假设请求线程是一个web服务,第二个线程是一个独立的java应用程序。。他们是否仍然可以使用线程等待/通知模式进行通信…请求线程将由app server管理(作为web服务),第二个线程将不受管理(作为独立java应用程序)。。。在本例中,您是否通过您建议的模式看到他们之间的通信有任何问题..我进一步研究了一些,发现了这个链接,它解释/建议将独立java应用程序移动到web应用程序。。我认为这对我来说是朝着正确方向迈出的一步,通过这种方式,web服务线程(发出请求并休眠等待响应的线程)和中断线程(接收响应并唤醒休眠线程的线程)这两个托管线程都在app server控制下吗?我想知道web应用程序线程唤醒等待事件发生的web服务线程的最佳方式是什么。。(在这种情况下,响应将到达)