【发布时间】:2010-12-23 09:33:32
【问题描述】:
我有一个应用程序,其中 Servlet 有一个名为 Update(ReqIn, ReqOut) 的方法。我从doGet & doPost 调用它并传递请求和响应变量,然后由Update(...) 填写以下静态变量:
...
public class Server extends HttpServlet {
public static HttpServletRequest In = null;
public static HttpServletResponse Out = null;
public static boolean isDebug = true;
public static boolean isPost = false;
public static String URL = "";
public static String IP = "0.0.0.0";
public static Cookie[] Cookies = null;
public static UserClass User = null;
public static boolean isLoggedIn = false;
...
}
基本上抽象出最常用的东西并根据每个请求对其进行更新。这也允许我从网站的任何地方访问 IP 地址和当前用户数据,只需编写 Server.User.getUsername(); 在每次加载页面时创建一个新的 Class 实例并使用更长的访问代码:Server.getUser().getUsername();
现在的问题是: 在多用户环境(AppEngine 上的 Jetty)中,这会带来什么问题吗?例如。一些线程/竞赛问题使用户看到不正确的 IP 地址或在极端情况下突然以其他用户身份登录?
或者我应该重写代码并将其更改为Public UserClass User而不是Public static UserClass User等?
【问题讨论】:
标签: java google-app-engine servlets jetty static-members