创建servlet(静态,实例或本地)时,App Engine服务的适当范围是什么?每个都有什么含义?似乎您应该在尽可能广泛的范围内使用它们,以避免重新创建(或重新检索)它们的开销,但是我想知道这是否会导致数据的不正确重用,尤其是如果。下面提供了每个范围的示例。 <threadsafe>true</threadsafe>将在以下示例中使用,但我的问题适用于所有服务(尽管我不确定答案是否取决于所使用的服务)。我通常使用MemcacheService,MemcacheService,DatastoreService,PersistenceManager和ChannelService。静态范围:public class MyServlet extends HttpServlet { private static MemcacheService memcacheService = MemcacheServiceFactory.getMemcacheService(); @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) { memcacheService.get("x"); }}实例成员:public class MyServlet extends HttpServlet { private MemcacheService memcacheService = MemcacheServiceFactory.getMemcacheService(); @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) { memcacheService.get("x"); }}本地范围:public class MyServlet extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) { MemcacheService memcacheService = MemcacheServiceFactory.getMemcacheService(); memcacheService.get("x"); }} (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 GAE是一个分布式系统,其中所有服务都在单独的服务器上运行。因此,当您调用服务时,它会在内部对请求进行序列化(带有协议缓冲区的afaik),将其发送到运行该服务的服务器,检索结果并将其反序列化。因此,所有*Service类基本上都是围绕序列化/反序列化代码的精简包装。参见例如source of MemcacheService。关于范围:无需对*Service类进行优化,因为它们是非常薄的包装器,与整个服务往返相比,创建它们应该花费的时间可以忽略不计。关于java - App Engine服务的适当范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12238237/ (adsbygoogle = window.adsbygoogle || []).push({}); 10-09 18:41