有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

关于使用另一个Web服务的Web服务的java建议

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

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

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

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

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

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

感谢您的建议


共 (2) 个答案

  1. # 1 楼答案

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

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

    这没有问题,我们在Tomcat 6上运行,它运行得很好。显然,多线程的常见注意事项适用,我们使用的是Java 6 Java。util。并发库,非常有用

  2. # 2 楼答案

    让几个后端查询并行运行似乎确实有潜在的好处,所以某种多线程似乎是个好主意

    我想到了几个问题:

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