2011-11-06 45 views
1

我使用Google App Engine,spring mvc和spring jpa dao。在我的应用程序中,我想在会话销毁时从数据库中删除一个条目。所以我使用会话侦听器,它实际上想通过spring dao bean从数据库中删除一个条目。Spring Mvc中的Session Listener谷歌应用引擎

这是我在会话监听

@Override 
public void sessionDestroyed(HttpSessionEvent se) { 
//get entry from session and now remove entry from database 
getMyDao(se).delete(entry); 
} 

private MyDao getMyDao(HttpSessionEvent sessionEvent){ 

    HttpSession session = sessionEvent.getSession(); 

    ApplicationContext ctx = 
      WebApplicationContextUtils. 
       getWebApplicationContext(session.getServletContext()); 

    MyDao dao = 
       (MyDao) ctx.getBean("myDao"); 

    return dao; 
} 

我收到以下错误,当我尝试删除

显示java.lang.NullPointerException代码:没有API环境下注册了这个线程。 在com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId(DatastoreApiHelper.java:108) 在com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace(DatastoreApiHelper.java:118) 在com.google。 appengine.api.datastore.Query。(Query.java:112) at org.datanucleus.store.appengine.query.DatastoreQuery.validate(DatastoreQuery.java:794) at org.datanucleus.store.appengine.query.DatastoreQuery .performExecute(DatastoreQuery.java:225) 在org.datanucleus.store.appengine.query.JPQLQuery.performExecute(JPQLQuery.java:80)

任何一个可以告诉我为什么,当我调用API环境未注册来自会话监听器?

回答

1

Google App Engine不支持会话侦听器。会话侦听器可能会在本地调用,但没有API环境注册此线程。在生产监听器中甚至不会调用。