我有一个注册表,可以跟踪用户会话期间进行的某些操作。它基本上是列表的包装器,它作为会话属性存储在servlet中
class Registry {
private List<Operation> ops = new ArrayList<Operation>();
public Registry add(Operation o) {
this.ops.add(o);
return this;
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Registry reg = (Registry)request.getSession().getAttribute("registry");
if (reg == null) {
reg = new Registry();
request.getSession().setAttribute("registry", reg);
}
System.out.println("reg " + reg);
reg.add(new Operation("info"));
}
当我通过jboss运行我的webapp时,我总是得到相同的对象,并且每次获取请求时注册表都会不断增长。在上面的示例中,如果您发出10个请求,那么您最终会得到一个包含10个操作的注册表。
但是当Jboss与apache结合使用时,注册表会在每个get请求中刷新,并且每次都会创建一个新的Registry实例,因此您总是会得到一个空的注册表。
我知道对于了解服务器的人来说这一定是一个非常简单的情况,但我对该领域的了解是无穷小的。
所以,如果您能提供有关如何保持注册表正常运行或可能导致此问题的原因,我将感谢您。
感谢。