2011-08-12 44 views
0

最近我看到有人寫這段代碼,其中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時,是不是已關閉?爲什麼它仍能堅持對象?

我大概知道GAE使用Jetty Server。與Apache不同的是,Jetty每進入一個請求就會產生一個新的線程。這與這張圖片有什麼關係?

回答

1
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(); 
} 
相關問題