2013-11-20 53 views
0

我需要创建一个基于REST的Web服务,其中请求将被异步处理。 通过异步,我的意思是客户端将发出请求,并继续执行,等待服务的响应。是否有可能实现这一目标? 我需要在WebSphere Application Server中部署服务。RESTFul WebService中的异步请求

+0

这里是一个很好的方法:http://restcookbook.com/Resources/asynchroneous-operations/ – EJK

回答

1

是的,你可以创建一个调用你的REST服务的Thread。也许你可以看到如何做到这一点的位置:

http://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html

+0

我将从我的web应用程序(客户端基本上是一个servlet)访问Web服务。据我所知,在Web应用程序中显式创建线程并不是一个好习惯。 –

+1

通常,线程是一种有限的资源,创建它们时应该小心。这并不意味着使用线程是不好的做法。你怎么做取决于你的应用需求。这个应用程序是否有望为大量的并发用户提供服务?如果是这样,那么你可能想看看线程池。 – EJK

+1

排队是另一种考虑的方法。专用一个或多个后台线程来处理这些请求。让您的Web服务将请求放在全局可访问的队列中。后台线程将一次处理一个请求。这种方法的优点是,您可以完全控制在任何给定时间存在多少个线程。 – EJK

5

所以我不知道,如果你的问题是关于如何做服务器,或如何处理一个RESTful的方式异步操作的异步处理。如果是后者,那么这里就是该方法的总结建议在:http://restcookbook.com/Resources/asynchroneous-operations/

代码为您服务的方法来

  • (一)处理请求的操作异步(使用一个单独的 线程最有可能的) 。
  • (b)立即返回响应码202-接受
  • (c)在响应正文中,返回一个表示请求操作状态的URI。

那么你的客户端代码:

  • (一)主呼服务方法。响应完成后,如果响应代码是202,请注意正文中返回的URI。 (b)在后台线程中,定期轮询该URI,直到它返回操作完成的指示。
+0

这是一个更准确的描述https://www.adayinthelifeof.nl/2011/06/02/asynchronous-operations-in-rest/ – supernova