【问题标题】:How to implement asynchronous rest webservice client using RestTemplate?如何使用 RestTemplate 实现异步 REST Web 服务客户端?
【发布时间】:2016-07-21 17:17:57
【问题描述】:

我想使用 spring 3.1 rest 模板异步调用 rest webservice 调用。目前我们正在使用 Resttemplate.getForObject 方法来调用 rest webservice。现在根据要求,我们必须与现有的同时调用另一个 Web 服务方法。我们通过实例化方法类从 EJB 2.1 无状态会话 bean 调用此方法调用。

示例代码如下:-

public class MyImplServerBean extends EJBObject{
   RestServiceImpl restImpl = new RestServiceImpl(); 
   ArrayList<User> userDetailsList = restImpl.getUserDetails(123);
}

public class RestServiceImpl {

   RestTemplate template = new RestTemplate();

   public ArrayList<User> getUserDetails(int userId){

   ArrayList<User> userList = new ArrayList<User>();
   String url = "http://localhost:7001/myUserService/userId";
   User user = template.getForObject(url, User.class);
   userList.add(user);
   return userList;
}

我们现在需要异步调用 getUserDetails 方法。我使用 @Async 注释得到了这个想法,但不知道如何准确实现。 你能帮忙吗?

【问题讨论】:

    标签: java spring resttemplate


    【解决方案1】:

    我使用this 教程完成了类似的任务。我做了一些修改。以下是如何让它工作。

    1) 创建一个配置类并确保它被 ApplicationContext 扫描。我使用 AnnotationConfigWebApplicationContext。

    @EnableAsync
    @Configuration
    public class AsyncConfiguration implements AsyncConfigurer
    {
        @Bean(name = "threadPoolTaskExecutor")
        public Executor threadPoolTaskExecutor()
        {
            ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
            executor.setCorePoolSize(10);
            return executor;
        }
    
        @Override
        public Executor getAsyncExecutor()
        {
            return new ThreadPoolTaskExecutor();
        }
    
        @Override
        public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler()
        {
            return new CustomAsyncExceptionHandler();
        }
    }
    

    2) 用

    注释你的方法
    @Async("threadPoolTaskExecutor")
    

    您的方法必须返回 void 或 Future。

    3) 确保 async 方法是公开的并且是从另一个类调用的。这样,当反射调用方法时,Spring“看到”注解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多