【问题标题】:The API package 'memcache' or call 'FlushAll()' was not found未找到 API 包“memcache”或调用“FlushAll()”
【发布时间】:2015-01-10 01:57:30
【问题描述】:

我正在使用 Google Apps Engine SDK 1.9.12 在本地测试一些代码。我添加了一个 servlet 侦听器来用 2 个命名空间初始化内存缓存。我在方法 contextDestroyed(ServletContextEvent sce) 中添加了代码来清除 Memcache 条目:

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)

请帮我解决这个问题。

【问题讨论】:

  • 你从哪里得到这个异常?在 App Engine(生产)上?还是在本地运行项目?应用引擎 SDK jar 是否已添加到您的项目中?
  • 我在本地使用。 App Engine SDK 1.9.12 jar 被添加到项目中。我正在使用 Memcache API 来设置值并且它可以工作。

标签: java google-app-engine memcached


【解决方案1】:

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

很遗憾,您不能在关机时使用ServletContextListener 执行内存缓存操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    相关资源
    最近更新 更多