繁体   English   中英

实例变量如何在Google App Engine上工作? 【JAVA]

[英]How do instance variable works on Google App Engine? [Java]

我对我在Google App Engine上设置的此示例应用程序感到非常困惑。 这是我所拥有的:

package com.ha.ha.ha;
import java.io.IOException;
import javax.servlet.http.*;

@SuppressWarnings("serial")
public class SecondTrialServlet extends HttpServlet {

    private static int sCounter = 0;
    private int mCounter = 0;

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        resp.setContentType("text/plain");
        resp.getWriter().println("sCounter is : " + (sCounter++));
        resp.getWriter().println("mCounter is : " + (mCounter++));
    }
}

当我在浏览器页面上点击本地主机(或相应的已部署版本)时,刷新页面9次,我看到:

sCounter is : 9
mCounter is : 9

为什么会这样? 我认为应该在执行新请求(刷新浏览器页面)时“清除”实例变量或其他内容。

我希望柜台继续运转多久? 就像如果我在那儿设置不断刷新页面,它会一直不断更新直到Integer.MAX_VALUE吗?

这是仅因为我有1个“实例”吗? 如果是这样,我可以期望该实例继续运行多长时间?

我想构建一个简单的应用程序,无限期地保留一些哈希图。 我不希望Web应用程序必须全部访问(也许每天少于100个请求)。 我可以像计数器变量一样存储所有内容吗?

在GooglaAppEngine中,您不能依赖Servlet的内部状态。

如果要具有状态,则需要使用其缓存中提供的API。

在mCounter = 9上,这同样适用:当垃圾回收器更适合GAE时调用,并且您不能依赖于此。

此外,如果要扩展实例,则无法通过这种方式管理状态,而只能通过GAE的内部缓存系统进行管理。

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM