Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.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服务的Web服务的建议_Java_Multithreading_Tomcat_Service - Fatal编程技术网

Java 关于使用其他Web服务的Web服务的建议

Java 关于使用其他Web服务的Web服务的建议,java,multithreading,tomcat,service,Java,Multithreading,Tomcat,Service,我正在设计一个应用程序,并试图研究它应该如何工作,以及我可以使用的任何提示等 我需要开发一个运行在Tomcat6上的中间件Web服务 客户端程序使用我的Web服务 我的Web服务需要根据客户机的信息依次运行大量搜索,10次。这些搜索使用第三方web服务。第三方提供Java存根类 我是否可以/应该将我的web服务编写为多线程,以便创建每个线程并用于搜索、整理结果并返回给客户端 搜索大约需要200-500毫秒才能完成 所有的建议都收到了,我有点不确定你到底需要什么。搜索是否可以并行运行?如果是这种情

我正在设计一个应用程序,并试图研究它应该如何工作,以及我可以使用的任何提示等

我需要开发一个运行在Tomcat6上的中间件Web服务

客户端程序使用我的Web服务

我的Web服务需要根据客户机的信息依次运行大量搜索,10次。这些搜索使用第三方web服务。第三方提供Java存根类

我是否可以/应该将我的web服务编写为多线程,以便创建每个线程并用于搜索、整理结果并返回给客户端

搜索大约需要200-500毫秒才能完成


所有的建议都收到了,我有点不确定你到底需要什么。搜索是否可以并行运行?如果是这种情况,那么使用多线程来执行它们可能不是一个坏主意

在我正在处理的一个应用程序中,我们也有类似的东西——一个长时间运行的搜索在一个单独的线程中运行,以便其他处理可以继续,然后当它完成时,结果被发送回客户端


这是没有问题的,我们在Tomcat6上运行,它工作得很好。显然,多线程通常需要注意的是,我们使用的是Java 6 Java.util.concurrent库,它非常有用。

多个后端查询并行运行似乎有潜在的好处,因此某种多线程似乎是个好主意

我想到了几个问题:

  • 通常不推荐在Java EE容器中直接生成线程——Java EE容器喜欢控制它——因此在Java EE世界中有专门支持的API来实现这一点(请参阅本主题的更多内容)。我不知道现在Tomcat是否支持这样的API,如果不是这样的话,也许会有办法
  • 你需要一个很好的策略来应对意志破碎、反应迟钝的问题。假设你有8个答案中的7个,而第8个答案似乎需要很长时间,那么快速给出部分答案会更好。最好先考虑一下这个问题
  • 这就导致采用某种“通知命令”方法更好,发送请求,稍后返回以收集临时结果,稍后返回以收集更完整的结果
  • 某些后端系统可能会对来自同一来源的过多请求做出不良反应。您可能需要限制请求频率,这样既可以“社交”,又可以避免任何黑名单策略