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

时间:2016-02-20 01:03:09

标签: jsf tomcat tomcat8 httpsession

我今天刚才注意到每次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>

但最后一次不能成为在容器启动时创建会话的原因,对吗?

1 个答案:

答案 0 :(得分:1)

当您从像Eclipse这样的IDE内部运行服务器时,就会发生这种情况。 IDE的服务器插件(如Eclipse Tomcat插件)可能在启动过程之后通过向/发送GET请求来执行自检(因此IDE服务器插件可以将服务器标记为&#34;已启动&# 34)。显然你在/页面上(隐含地)创建了一个新会话。

忽略它。这在生产过程中不会发生。