我正在开发一个GWT Web应用程序,我想知道是否有办法在服务器上保留一些类。
关键是我想创建一个静态类,它将在服务器上运行并为我管理一些东西..让我们说当前登录的用户。
public class someclass{
private static someclass instance;
private List<user> users;
private someclass(){
users = new ArrayList<user>();
}
public someclass getInstance()
{
if (instance == null)
instance = new someclass();
return instance;
}
public addUser(user u)
{
users.add(user);
}
}
假设没有同步需要它对问题无能为力。
让我们说第一个用户登录,并添加到用户列表中。 当第二个用户登录时,用户列表是否为空?还是会有老用户呢?
...谢谢
答案 0 :(得分:2)
有不同的方法可以做到这一点。但是,解决此方案的一种非常简单的方法是使用启动servlet 在web.xml中,将其定义如下。
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>TestServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
在该servlet的静态字段中维护stat。
答案 1 :(得分:1)
虽然ring bearer的答案是最兼容的(它甚至可以在一些非常旧的servlet容器中工作),但我认为当前的方法是为你的应用程序注册一个上下文监听器。例如,我在web.xml中使用它以使Quartz任务调度程序可用:
<listener>
<listener-class>org.quartz.ee.servlet.QuartzInitializerListener</listener-class>
</listener>
您的上下文侦听器必须实现javax.servlet.ServletContextListener
接口.servlet容器将调用void contextInitialized(javax.servlet.ServletContextEvent sce)
以通知应用程序启动。关闭时,servlet容器将调用void contextDestroyed(javax.servlet.ServletContextEvent sce)
。
使用servlet的方法类似,但您的逻辑将在servlet生命周期操作中。