多个用户重用tomcat会话

时间:2012-12-06 14:18:20

标签: tomcat servlets

我在创建Web应用程序方面相对较新,所以请耐心等待。

我有一个遗留应用程序,我想在tomcat上托管。这个应用程序需要很长时间才能启动(10秒?)并消耗大量资源。我希望在任何给定时间只运行此应用程序的一个实例。

我想设置tomcat,以便在任何给定时间可以有0或1个会话。当用户第一次连接时,会创建一个会话,该会话将激活旧应用程序的实例,任何后续用户都将使用相同的会话。

似乎tomcat的默认行为是为每个用户创建一个对我不起作用的新会话。

请告知我如何设置tomcat,以便后续用户使用第一个用户创建的会话?

2 个答案:

答案 0 :(得分:1)

另一个选择是实现自己的会话Manager。会话管理员负责创建新会话,查找会话等,并在server.xml中设置。

答案 1 :(得分:0)

我最终实现了一个维护单个实例的HttpSessionListener:

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.*;
import javax.servlet.http.*;

public class SessionListener implements HttpSessionListener {

   private static HttpSession _session = null;

   public static HttpSession GetSession()
   {
      return _session;
   }

   @Override
   public void sessionCreated(HttpSessionEvent arg0) {
      if (_session == null)
      {
         System.out.println("setting session");
         _session = arg0.getSession();
      }
   }

   @Override
   public void sessionDestroyed(HttpSessionEvent arg0) {
      System.out.println("Clearing session");
      _session = null;
  } 
}