我正在开发一个WebApplication,一次可以同时访问7000个用户。
所以在这个Web应用程序中,我使用的是以下逻辑
当用户登录成功时,我将与他相关的信息存储在ArrayList中,如图所示。
第1课:
if(successfullyloggedin)
{
ArrayList accounts = getInfoForUser(customerId);
userinfo.accountsinfor = accounts;
}
public ArrayList getInfoForUser(String custId)
{
ArrayList users = getDataFromDatabase();
return users;
}
第2课:
public class UserInfo {
public static ArrayList accountsinfor;
}
第3课:
第3类是一个服务类,它会检查是否存在用户进行呼叫
class services
{
public String MakeCall(String Id)
{
ArrayList accounts = UserInfo.accountsinfor;
if(!ID.contains(accounts ))
// Throw an Exception
}
else
{
// Its fine
}
}
请告诉我是否可以在WebAplication中使用此逻辑,该WebAplication一次由近7000个用户同时使用。 我关心的是使用静态变量。
或者请建议,如果这是一个更好的方法来继续这个。
答案 0 :(得分:2)
由于它是一个Web应用程序,我会为每个用户创建一个会话并将其特定信息放在那里。这就是它的用途。
您没有说明信息的内容:凭据,ACL等。如果清楚,您可以更轻松地评论您的数据结构选择。
答案 1 :(得分:0)
目前尚不清楚您的arraylist是否包含用户信息或用户列表,因为makeCall会在其中查找“ID”。
无论如何,在并发环境中将内容存储在静态变量中通常是个坏主意。如果您在Web应用程序中,我建议您将用户信息存储在HttpSession中作为属性:
答案 2 :(得分:0)
最好的方法是使用HttpSession并让容器为您处理。
只需用@SessionScoped
注释包含用户信息的类(当然这取决于您使用的框架),让容器为您处理所有事情。而不是做容易出错的设计;)