2011-08-12 4 views
0

最近、誰かがCoursesが1 PersistenceManagerのインスタンスを保持する静的オブジェクトであるこのコードを書いているのを見ました。オブジェクトを変更しているPersistence Managerも閉じていますか?

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(); 
    } 
} 

このコードは機能します。

私の質問は、2番目のaddCourseリクエストが入ってきたとき、永続マネージャインスタンスが1つしかないので、もう閉じていないのですか?なぜそれでもオブジェクトを永続化できますか?

私は大まかにGAEがJetty Serverを使用していることを知っています。そしてApacheと違って、Jettyはリクエストが来るたびに新しいスレッドを生成します。これはどのようにこの画像に収まるのですか?

答えて

1
public Courses() { 
    pm = PMF.get().getPersistenceManager(); 
} 

あなたがコースを作成するとき、それはpmを「再作成する」。 これを使用することができます。

public void addCourse(String ID, String name) { 
    Course course = new Course(ID, name, coordinatorID); 
    pm.makePersistent(course); 
    pm.close(); 
} 
関連する問題