【问题标题】:Session Listener in Spring Mvc Google app engineSpring Mvc Google 应用引擎中的会话侦听器
【发布时间】:2011-12-23 04:42:38
【问题描述】:

我正在使用 Google App Engine、spring mvc 和 spring jpa dao。在我的应用程序中,我想在会话被销毁时从数据库中删除一个条目。所以我正在使用会话监听器,它实际上想通过 spring dao bean 从数据库中删除一个条目。

这是我在会话监听器中的代码

@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) 在 org.datanucleus.store.appengine.query.DatastoreQuery.validate(DatastoreQuery.java:794) 在 org.datanucleus.store.appengine.query.DatastoreQuery.performExecute(DatastoreQuery.java:225) 在 org.datanucleus.store.appengine.query.JPQLQuery.performExecute(JPQLQuery.java:80)

谁能告诉我为什么当我从会话监听器调用时没有注册 api 环境?

【问题讨论】:

    标签: java google-app-engine session jpa spring-mvc


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-07
      • 2013-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多