Диспетчер постоянства изменяет объект, даже закрытый? - PullRequest
0 голосов
/ 12 августа 2011

Недавно я видел, как кто-то пишет этот фрагмент кода, в котором 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();
    }
}

Этот код работает.

Myвопрос в том, что существует только 1 экземпляр диспетчера персистентности, когда поступает второй запрос addCourse, не закрывается ли уже вечера?Почему он все еще может сохранять объект?

Я примерно знаю, что GAE использует Jetty Server.И в отличие от Apache, Jetty создает новый поток при каждом поступающем запросе. Как это вписывается в эту картину?

1 Ответ

1 голос
/ 12 октября 2011
public Courses() {
    pm = PMF.get().getPersistenceManager();
}

при создании курса он «воссоздает» личный кабинет.так что вы можете использовать его.

public void addCourse(String ID, String name)  {
    Course course = new Course(ID, name, coordinatorID);
    pm.makePersistent(course);
    pm.close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...