3

非同期タスクと、すぐに戻ってバックグラウンドでタスクを開始するページを実装したいと思います。ただし、ページはバックグラウンド タスクが完了するまで待機し、その後でのみ戻ります。私がアクセス/startすると、ページの読み込みに 15 秒かかります。Spring 3.2.0 を使用しています。<task:annotation-driven/>test-servlet.xml に含まれる行があります。

奇妙なことに、@Async を @Async("this_bean_does_not_exist") に置き換えても、アプリケーションは同じことを行います (ただし、存在しない Bean を参照するための例外が予想されます)。

public interface AsyncTestService {
    void startSlowProcess();
}

@Service
public class AsyncTestServiceImpl implements AsyncTestService {

    @Override
    @Async
    public void startSlowProcess() {
        try {
            Thread.sleep(15000);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }
}

@Controller
public class TestController {

    @Autowired
    AsyncTestService asyncTestService;

    @RequestMapping("/start")
    @ResponseBody
    public String startSlowProcess() {
        asyncTestService.startSlowProcess(); // It takes 15s to complete
        return "STARTED"; // should return immediately
    }
}
4

2 に答える 2