【发布时间】:2014-02-03 17:10:55
【问题描述】:
我对在 Google App Engine 上遇到的这个问题感到困惑。
我创建了几个 servlet,所以我创建了一个基类来做一些基本的重复工作。像这样:
public class MyBase extends HttpServlet {
protected String someValue1;
protected String someValue2;
protected void setup(HttpServletRequest req, HttpServletResponse resp) {
someValue1 = req.getParameter("paramName1");
someValue2 = req.getParameter("paramName2");
}
和 servlet:
public class MyServlet extends MyBase {
@Override
public void doGet(final HttpServletRequest req,
final HttpServletResponse resp) {
super.setup(req, resp);
doWork(someValue1);
doOtherWork(someValue2);
}
足够简单 - 这通常可以完美运行,并且在本地服务器上运行时,任何数量的负载测试都可以正常工作。此外,GAE 测试适用于测试实例。在我的生产实例上,并且仅在生产中,有 1000 个同时用户,someValue1 和 someValue2 的值成为两个不同用户的请求! Servlet 将在 99% 的时间内工作,100 个请求中有 1 个最终会使用来自不同请求的参数。没有意义,但它正在发生。
这显然是实际代码的简化版本,但我已经使用集成测试重现了它。
也许我错过了一些关于扩展 httpservlet 的细微差别?
【问题讨论】:
标签: java google-app-engine servlets