2014-10-09 40 views
0

我使用Google Apps Engine SDK 1.9.12在本地测试了一些代码。我添加了一个servlet侦听器,用2个名称空间初始化memcache。我已经添加代码的方法contextDestroyed(ServletContextEvent sce)内清除内存缓存条目:未找到API包'memcache'或调用'FlushAll()'

MemcacheServiceFactory.getMemcacheService().clearAll(); 

这实际上引发以下异常,服务器宕机:

WARNING: EXCEPTION 
com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'memcache' or call 'FlushAll()' was not found. 
    at com.google.apphosting.api.ApiProxy$1.get(ApiProxy.java:179) 
    at com.google.apphosting.api.ApiProxy$1.get(ApiProxy.java:177) 
    at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:88) 
    at com.google.appengine.api.memcache.MemcacheServiceImpl.quietGet(MemcacheServiceImpl.java:26) 
    at com.google.appengine.api.memcache.MemcacheServiceImpl.clearAll(MemcacheServiceImpl.java:170) 
    at com.valeo.general.util.BaseCacheManager.clearAll(BaseCacheManager.java:47) 
    at com.valeo.general.listeners.BaseCacheListener.contextDestroyed(BaseCacheListener.java:27) 
    at org.mortbay.jetty.handler.ContextHandler.doStop(ContextHandler.java:599) 
    at org.mortbay.jetty.webapp.WebAppContext.doStop(WebAppContext.java:505) 
    at org.mortbay.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:76) 
    at org.mortbay.jetty.handler.HandlerWrapper.doStop(HandlerWrapper.java:142) 
    at org.mortbay.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:76) 
    at com.google.appengine.tools.development.JettyContainerService.reloadWebApp(JettyContainerService.java:393) 
    at com.google.appengine.tools.development.JettyContainerService$2.filesChanged(JettyContainerService.java:380) 
    at org.mortbay.util.Scanner.reportBulkChanges(Scanner.java:486) 
    at org.mortbay.util.Scanner.reportDifferences(Scanner.java:352) 
    at org.mortbay.util.Scanner.scan(Scanner.java:280) 
    at org.mortbay.util.Scanner$1.run(Scanner.java:232) 
    at java.util.TimerThread.mainLoop(Unknown Source) 
    at java.util.TimerThread.run(Unknown Source) 

请帮我解决这个问题。

+0

你从哪里得到这个例外?在App Engine上(生产)?或者在本地运行项目?应用程序引擎SDK jar是否添加到您的项目中? – icza 2014-10-09 07:48:55

+0

我在本地使用它。 App Engine SDK 1.9.12 jar被添加到项目中。我正在使用Memcache API来设置值,它的工作原理。 – 2014-10-09 08:23:34

回答

0

当App Engine Java框架在contextDestroyed(ServletContextEvent)中调用您的代码时,它已经断开与后端服务(包括memcache)的连接。

因此,不幸的是,您不能使用ServletContextListener在关闭时执行memcache操作。

相关问题