简体   繁体   English

Spring Mvc Google应用引擎中的会话监听器

[英]Session Listener in Spring Mvc Google app engine

I am using Google App Engine, spring mvc and spring jpa dao. 我正在使用Google App Engine,spring mvc和spring jpa dao。 In my application i want to delete an entry from the database when session is destroyed. 在我的应用程序中,当会话被破坏时,我想从数据库中删除一个条目。 So i am using session listeners which actually wants to deletes an entry from the database through spring dao bean. 所以我正在使用会话侦听器,它实际上想通过spring dao bean从数据库中删除一个条目。

Here is my code in 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;
}

I am getting the below error when i try deleting 尝试删除时出现以下错误

java.lang.NullPointerException: No API environment is registered for this thread. java.lang.NullPointerException:没有为此线程注册任何API环境。 at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId(DatastoreApiHelper.java:108) at com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace(DatastoreApiHelper.java:118) at 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) at org.datanucleus.store.appengine.query.JPQLQuery.performExecute(JPQLQuery.java:80) 在com.google.appengine.api.com上的com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppIdNamespace(DatastoreApiHelper.java:118)上的com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId(DatastoreApiHelper.java:108)上org.datanucleus.store.appengine.query.DatastoreQuery.validate(DatastoreQuery.java:794)的.datastore.Query。(Query.java:112)org.datanucleus.store.appengine.query.DatastoreQuery.performExecute(DatastoreQuery。 java:225),位于org.datanucleus.store.appengine.query.JPQLQuery.performExecute(JPQLQuery.java:80)

Can any one please tell me why api environment is not registered when i invoke from session listener? 任何人都可以告诉我为什么从会话侦听器调用时未注册api环境吗?

Google App Engine Doesn't support session listeners. Google App Engine不支持会话监听器。 Session listeners may get invoke in local, but No API environment is registered for this thread. 会话侦听器可以在本地调用,但是没有为该线程注册任何API环境。 In production listeners will not even invoke. 在生产中,侦听器甚至不会调用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM