我有一个Javascript,可以同时发送多个ajax请求。这些请求正在加载存储在会话中存储的另一个对象中的数据。我的问题是不同的请求会覆盖彼此加载的数据,因为它们无法共享加载的数据。
我修改了实际代码,使其更容易理解。 Traincontainer拥有多个Train-objects和一个独特的trainNr。然后该列车的人员被装载并存储在该物体中。之后,容器将被写回会话。
使这个线程安全的最佳方法是什么?
@GET @Path(value = "trains/{trainNr}/persons")
@Produces({MediaType.APPLICATION_JSON})
public List<Person> loadPersons(@Context HttpServletRequest request, @PathParam("trainNr") String trainNr) {
// load data
TrainContainer trainContainer = request.getSession().getAttribute("trainContainer");
List<Person> persons = trainService.loadPersons(trainContainer, trainNr);
// update session attribute
request.getSession().setAttribute("trainContainer", trainContainer);
return persons;
}
更新 trainContainer中的Train对象在loadPersons中被更改,这是将容器存储回会话的原因。不同的调用覆盖了被加载的人,因为他们彼此不知道,最后只有最后请求的人被存储在会话中