Springboot Restful WS调用仅一次击中我的控制器

时间:2019-12-11 00:03:40

标签: java rest spring-boot

我是Spring Boot的新手,并尝试使用Spring Boot实现多线程。当带有URL的REST调用时,我要做的就是创建新的Selenium Web驱动程序实例并执行测试,一旦完成,我将以JSON返回所需的响应。

这里的真正问题是,当我在执行程序上使用shutdown()时,我只能击中端点一次,并且收到响应,但是当我再次单击时,它没有击中控制器,因此没有响应回来了我只有先前请求的回复。

我厌倦了不对执行器执行关机操作,当我这样做时,能够多次击中端点,但是响应与所有请求都混杂在一起。有人可以让我知道我在做什么错。

下面是代码段

控制器类

 @GetMapping(path="/**/***", produces = "application/json")
public List<ResponseBean> returnResponse(@RequestHeader(value = "url") String url)
        throws InterruptedException {
    try {
        resp = service.getResponse(url);
        return resp;
    } catch (Exception e) {

    } finally {
    }
    return null;
}

线程类

for (int i = 0; i < splittedUrls.length; i++) {

            StartMyThreads startMyThreads = beanFactory.getBean(StartMyThreads.class);
            startMyThreads.setUrl(splittedUrls[i]);
            taskExecutor.execute(startMyThreads);
            Thread.sleep(CIConstants.THREAD_SLEEP_TIME_SPRING_AUTO_INITIALIZER);
        }

        taskExecutor.destroy();
        System.out.println(taskExecutor.getActiveCount() + " " + taskExecutor.getPoolSize() + " "
                + taskExecutor.getCorePoolSize());

        for (;;) {

            int count = taskExecutor.getActiveCount();
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if (count == CIConstants.ZERO) {
                taskExecutor.shutdown();
                break;
            }
        }

我可以知道如何通过执行程序服务将其归档以多次击中我的端点。

谢谢

0 个答案:

没有答案