Jsf Tomcat 8在启动时创建一个新会话

Jsf Tomcat 8在启动时创建一个新会话,jsf,tomcat,tomcat8,httpsession,Jsf,Tomcat,Tomcat8,Httpsession,我今天刚刚注意到,每次Tomcat(8)启动时,它都会创建一个新的HttpSession(没有任何HttpServletRequest) 我刚刚添加了一个SessionListener,如下所示: public class SessionListener implements HttpSessionListener { public SessionListener() {} public void sessionCreated(HttpSessionEvent sessionE

我今天刚刚注意到,每次Tomcat(8)启动时,它都会创建一个新的
HttpSession
(没有任何
HttpServletRequest

我刚刚添加了一个SessionListener,如下所示:

public class SessionListener implements HttpSessionListener {
    public SessionListener() {}

    public void sessionCreated(HttpSessionEvent sessionEvent) {
        HttpSession session = sessionEvent.getSession();
        ServletContext context = session.getServletContext();

        try {
            if(session.isNew()){
                System.out.println("a new Session is created");
            }
        } catch (Exception e) {}
    }

    public void sessionDestroyed(HttpSessionEvent sessionEvent) {}
}
我今天唯一改变的是
context.xml

<Context>
    <Resource name="jdbc/test"
              auth="Container"
              type="javax.sql.DataSource"
              factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"           
              maxActive="-1"
              minIdle="-1"
              maxWait="10000"
              initialSize="10"
              username="XYZ" 
              password="XYZ" 
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/test"/>
</Context>


但最后一个可能不是在容器启动时创建会话的原因,对吗?

当您在像Eclipse这样的IDE中运行服务器时,会发生这种情况。IDE的服务器插件(如EclipseTomcat插件)可以在启动过程之后通过向
/
发送GET请求来执行自检(因此IDE服务器插件可以将服务器标记为“已启动”)。显然,您在
/
页面上(隐式)创建了一个新会话


别理它。这在生产过程中不会发生。

因此,您是从Eclipse这样的IDE内部启动Tomcat?除了实际问题:
maxWait
maxActive
都在Tomcat 8中。它们分别是
maxWaitMillis
maxTotal
。服务器应该记录一条关于那些不推荐使用的功能的警告。@BalusC,是的,我正在eclipse内部监视它。我的意思是启动TOMCAT而不是运行这个项目。@Tiny,谢谢你的提示。天哪,你怎么知道的?你真是个了不起的人。谢谢,是的,我有/作为我项目的路径,我现在更改它进行测试,没有创建新会话。谢谢你,伙计。