concurrent ajax requests manipulate same session object
concurrent ajax requests manipulate same session object
我有一个Javascript代码,它同时发送多个ajax请求。这些请求加载的数据存储在另一个存储在会话中的对象中。我的问题是,不同的请求会覆盖彼此加载的数据,因为它们无法共享加载的数据。\n为了更好地理解,我已经修改了真实代码。TrainContainer包含多个具有唯一trainNr的Train对象。然后,该列车的人员被加载并存储在该对象中。之后,容器被写回会话。\n如何以最佳方式使其线程安全?\n
@GET @Path(value = "trains/{trainNr}/persons") @Produces({MediaType.APPLICATION_JSON}) public ListloadPersons(@Context HttpServletRequest request, @PathParam("trainNr") String trainNr) { // 加载数据 TrainContainer trainContainer = request.getSession().getAttribute("trainContainer"); List persons = trainService.loadPersons(trainContainer, trainNr); // 更新会话属性 request.getSession().setAttribute("trainContainer", trainContainer); return persons; }
\n更新:\nloadPersons中改变了trainContainer中的Train对象,这就是将容器存回会话的原因。不同的调用会覆盖加载的人员,因为它们彼此不知道,最后只有来自最后一个请求的人员被存储在会话中。\n