【发布时间】:2016-06-01 18:22:26
【问题描述】:
我今天刚刚注意到,每次 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 内部启动 Tomcat?
-
除了实际问题:
maxWait和maxActive在 Tomcat 8 中一直是 deprecated。它们分别是maxWaitMillis和maxTotal。服务器应记录有关这些已弃用功能的警告。 -
@BalusC,是的,我从 Eclipse 内部盯着它。我的意思是启动 TOMCAT 不运行项目。
-
@Tiny,感谢您的提示。
标签: jsf tomcat tomcat8 httpsession