2011-11-06 6 views
1

Google App Engine, spring mvc 및 spring jpa dao를 사용하고 있습니다. 내 응용 프로그램에서 세션이 파괴되면 데이터베이스에서 항목을 삭제하고 싶습니다. 그래서 나는 실제로 봄 dao 빈을 통해 데이터베이스에서 항목을 삭제하고자하는 세션 리스너를 사용하고 있습니다.Spring Mvc의 Session Listener Google 응용 프로그램 엔진

여기 세션 리스너

@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.getCurrentAppIdNamespace에서 com.google.appengine.api.datastore.DatastoreApiHelper.getCurrentAppId (DatastoreApiHelper.java:108) (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 내가 호출 할 때 API 환경이 등록되지 않는 이유 org.datanucleus.store.appengine.query.JPQLQuery.performExecute에서 .performExecute (DatastoreQuery.java:225) (JPQLQuery.java:80)

어느 한 말해 주시겠습니까 세션 리스너로부터?

답변

1

Google App Engine 세션 수신기를 지원하지 않습니다. 세션 리스너는 로컬에서 호출 할 수 있지만이 스레드에 대해 API 환경이 등록되어 있지 않습니다. 프로덕션에서는 청취자도 호출하지 않습니다.

관련 문제