我在创建Web应用程序方面相对较新,所以请耐心等待。
我有一个遗留应用程序,我想在tomcat上托管。这个应用程序需要很长时间才能启动(10秒?)并消耗大量资源。我希望在任何给定时间只运行此应用程序的一个实例。
我想设置tomcat,以便在任何给定时间可以有0或1个会话。当用户第一次连接时,会创建一个会话,该会话将激活旧应用程序的实例,任何后续用户都将使用相同的会话。
似乎tomcat的默认行为是为每个用户创建一个对我不起作用的新会话。
请告知我如何设置tomcat,以便后续用户使用第一个用户创建的会话?
答案 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;
}
}