![](/img/trans.png)
[英]How to terminate Google App Engine instance programmatically in 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.