Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单请求Web服务的设计模式_Java_Web Services_Web Applications_Tomcat - Fatal编程技术网

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

Java 单请求Web服务的设计模式,java,web-services,web-applications,tomcat,Java,Web Services,Web Applications,Tomcat,我计划创建一个webservice(在Tomcat中),它可以处理系统上的某个文件并进行一些系统调用。我面临的挑战是确保在给定时间只能处理1个请求,并且需要优先处理前一个请求。我目前有一个singleton类可以根据请求工作。请求线程以某种方式等待运行的线程完成。但针对这些问题的一般设计模式是什么 有什么办法可以做到这一点吗 谢谢, V由于可能有太多的请求调用此服务,因此可能无法实现同步方法。也可能有一些客户在等待,以便超时。那么我更喜欢异步 服务-A接收请求并将其放入队列-A或DB表-A,同时

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

有什么办法可以做到这一点吗

谢谢,
V

由于可能有太多的请求调用此服务,因此可能无法实现同步方法。也可能有一些客户在等待,以便超时。那么我更喜欢异步

  • 服务-A接收请求并将其放入队列-A或DB表-A,同时生成ref-id
  • Service-A将ref-id返回给客户端以进行进一步监视
  • 有一个后端进程监视队列a或DB表a,并逐个执行请求
  • 完成后,将结果放入另一个队列B或DB表B
  • 如果请求完成,客户机将使用ref-id通过另一个Service-B定期进行监视
  • 我希望这有助于达到你的要求

    关于,


    Charlee Ch.

    我将把Charlee提到的队列放在ServletContext中。它在Web应用程序启动时初始化

    ServletContextListener
    的实现中,您可以通过后端进程初始化和销毁这些队列。使用ServletContext上的
    setAttribute
    存储它们

    现在,您可以通过Servlet中的Servlet上下文访问这些队列