Недавно я видел, как кто-то пишет этот фрагмент кода, в котором Courses
является статическим объектом, содержащим 1 экземпляр PersistenceManager
.
public class Courses {
private PersistenceManager pm;
private static Courses instance = null;
public Courses() {
pm = PMF.get().getPersistenceManager();
}
public static Courses inst() {
if (instance == null)
instance = new Courses();
return instance;
}
public void addCourse(String ID, String name) {
Course course = new Course(ID, name, coordinatorID);
pm.makePersistent(course);
pm.close();
}
}
Этот код работает.
Мой вопрос в том, что, поскольку существует только 1 экземпляр менеджера постоянства, когда поступает второй запрос addCourse
, разве это не pm уже закрыт? Почему он все еще может сохранять объект?
Я примерно знаю, что GAE использует Jetty Server. И в отличие от Apache, Jetty создает новый поток для каждого входящего запроса. Как это вписывается в эту картину?