我已经成功实现了轮询和回调客户端端异步示例,但现在我对实现具有服务器端异步的Web服务感兴趣。基础结构是使用JBoss AS 6.x的Java EE。
我试图实现的模式(据我所知)将涉及两个Web服务操作,一个用于启动请求,另一个用于检查请求是否已完成并检索结果。
我猜测,因为拿起结果不涉及长查询,我不需要JMS,我可以简单地查询数据库以查看结果是否准备就绪。所以,第二个操作是:
所以,我有很多问题。我已经看到一些对服务器端支持异步的引用,但它们似乎都在某种程度上是服务器特定的。例如,我已经看到了一个完全描述第一个操作的图表,但它似乎是特定于OC4J的。如果有人可以指导我实现这样的通用示例或教程,请执行。其他可能是,我应该使用JMS消息ID作为相关器返回客户端吗?我假设我应该使用CLIENT-ACKNOWLEDGE作为JMS会话模式,以便MDB可以向Web服务发送回复,然后从队列中删除该消息。或者,我应该打扰吗? Web服务端点是否应该生成JMS消息,将其弹出队列并将消息ID直接返回给服务客户端,而不经过让MDB通过JMS队列2发送回相关器的所有麻烦? [编辑:实际上,我越是考虑它,Web服务发送消息似乎是错误的,然后阻止等待队列2的回复? ]
答案 0 :(得分:0)
可以在步骤2生成关联ID,并立即将其返回给客户端。这会在响应客户端之前减少额外的跃点。生成持久消息到队列应该就足够了。我也没有看到需要两个队列。我更喜欢应用程序生成的相关ID。