Я пытаюсь выполнить метод (который занимает много времени для выполнения) сразу после отправки ответа от контроллера, не заставляя клиента ждать ответа.
Мой исходный код для отправки ответа имеет видследует,
@RequestMapping(value = "exportExcelReportService", method = RequestMethod.POST)
@ResponseStatus(value = HttpStatus.OK)
public void exportExcelReportServiceGetJsonObject(@ModelAttribute ReqParam reqParam, HttpServletResponse response) {
java.io.PrintWriter wr;
try {
wr = response.getWriter();
response.setStatus(HttpServletResponse.SC_OK);
wr.print(response);
wr.flush();
wr.close();
exportDataUsingVMService.getByteArrayForExcelSheet(reqParam);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Здесь getByteArrayForExcelSheet будет выполняться после того, как ответ будет отправлен клиенту.Но я не могу создать сеанс в этом методе,
public void getByteArrayForExcelSheet(ReqParam reqParam) {
JSONObject jObject = null;
HttpSession httpsession = request.getSession(false);
}
Когда запрос автоматически подключается так:
@Autowired
private HttpServletRequest request;
Я получаю исключение в getByteArrayForExcelSheet
, например,
java.lang.IllegalStateException: Cannot create a session after the response has been committed