单个请求Web服务的设计模式

时间:2011-06-27 23:30:18

标签: java web-services web-applications tomcat

我打算创建一个webservice(在Tomcat中),它与系统上的某个文件一起工作并进行一些系统调用。我们面临的挑战是确保在给定时间只能处理1个请求,并且先前的请求需要被抢占。我目前有一个单一的类可以处理请求。并请求线程以某种方式等待运行的线程完成。但是这些问题的一般设计模式是什么?

有关如何实现这一目标的任何想法?

谢谢, V

2 个答案:

答案 0 :(得分:0)

由于调用此服务的请求可能太多,因此可能无法实现同步方法。某些客户也可能有机会等待超时。然后我更喜欢异步作为

  1. Service-A接收请求并将其放入queue-A或DB table-A,同时生成ref-id。
  2. Service-A将ref-id返回给客户端以进行进一步监控。
  3. 有一个后端进程监视队列-A或DB表-A并逐个执行请求。
  4. 完成后,将结果放入另一个队列-B或DB表-B。
  5. 如果请求已完成,客户端会使用ref-id通过另一个Service-B定期监控。
  6. 我希望这可能有助于达到你的要求。

    方面,

    Charlee Ch。

答案 1 :(得分:0)

我会将Charlee提到的队列放在ServletContext中。它在WebApplication启动时初始化。

您可以在ServletContextListener的实现中将后端进程初始化并销毁这些队列。将它们与setAttribute一起存储在ServletContext上。

现在,您可以通过Servlet中的ServletContext访问这些队列。