0

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

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

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

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

您能否建议我如何设置tomcat,以便后续用户使用第一个用户创建的会话?

4

2 回答 2

1

另一种选择是实现您自己的会话管理器。会话管理器负责创建新会话、查找会话等,设置在server.xml.

于 2012-12-06T14:44:16.340 回答
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;
  } 
}
于 2012-12-06T15:21:01.320 回答