Tomcat 8 在启动时创建一个新会话
Tomcat 8 creates a new session on startup
我今天才注意到,每次 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 的服务器插件,例如 Eclipse Tomcat 插件,可能会在启动过程后通过向 /
发送 GET 请求来执行自检(因此 IDE 服务器插件可以将服务器标记为 "Started")。显然,您在 /
一个页面上(隐含地)创建了一个新会话。
忽略它。这不会在生产过程中发生。
我今天才注意到,每次 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 的服务器插件,例如 Eclipse Tomcat 插件,可能会在启动过程后通过向 /
发送 GET 请求来执行自检(因此 IDE 服务器插件可以将服务器标记为 "Started")。显然,您在 /
一个页面上(隐含地)创建了一个新会话。
忽略它。这不会在生产过程中发生。