gpt4 book ai didi

java - 从 Webapp 并行调用不同的 Web 服务

转载 作者:搜寻专家 更新时间:2023-11-01 01:45:23 26 4
gpt4 key购买 nike

我们有一个 stipes (java) 网络应用程序,它需要通过一个方法进行大约 15 个不同的 webserivce 调用。例如:...

    public Resolution userProfile()
{
serviceOneCall();
serviceTwoCall();
serviceThreeCall();
serviceFourCall();
....
serviceTenCall();

return new RedirectResolution("profiel.jsp");
}

所有这些都可以并行调用,互不依赖。大多数这些调用所做的一件事是将数据放入 session 中,一两个可能将数据放入 session 中的同一个对象中,因此线程安全可能是一个问题。

谁能建议一种同时调用所有这些的好方法?

最佳答案

并行执行此工作的所有解决方案都将涉及生成新线程或将作业提交到线程池以进行远程网络调用。

避免线程安全问题的一个好方法是使用 executorService并提交 Callable<T> 的子类(到 submit(Callable)invokeAll(Collection<Callable>) 方法)并让 Callables 返回响应值。这样您的初始方法就可以简单地处理每个调用的返回值并选择在 session 中设置响应或更新其他对象,而不是在另一个线程中进行这项工作。

所以基本算法:

  1. 将这些调用中的每一个提交到 Callable<T> 中的一个 executorService子类
  2. 收集 Future<T>你从 executorService 回来了
  3. 调用Future.get()在每个上阻塞直到你有一个响应,然后处理你希望回到主线程的响应

关于java - 从 Webapp 并行调用不同的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12413708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com