客户端不关闭,服务器关闭后,两次获取的session是同一个吗?
- 不是同一个,但是要确保数据不丢失。tomcat自动完成以下工作
- session的钝化: 在服务器正常关闭之前,将session对象系列化到硬盘上
- session的活化:在服务器启动后,将session文件转化为内存中的session对象即可。
第一件事:存在客户端的session信息,如果此时服务器突然关闭再启动,session还是原来的session,以确保一致性。
2.
实验:在Tomcat运行环境中:(在IDEA中不能完成这个操作,所以使用本地Tomcat环境)
3.
不是找工作空间的,而是找部署的工作项目中,打包项目,选择这些文件然后压缩,再把后缀名改为war
4.
把war包扔到Tomcat的安装位置的webapps下
5.
启动本地的Tomcat,
6.
此时在此文件夹中将会自动解压出文件,然后可以访问其中的资源
7.
此时如果正常关闭Tomcat,将会在work中生成一个sessions.ser的文件(钝化),这里面放的是session的对象,
8.
如果此时在重新启动服务器,这时在work的sessions.ser的文件将会加载到服务器中(活化),并且会被销毁掉。把刚才关闭服务器的session对象还原到新开启的服务器中,地址值虽然不一样,但是session对象是一样的
9.
Tomcat已经将活化和钝化的事情给干了,
10.
这时候要讲一讲IDEA了,虽然可以钝化,但是不可以活化,
11.
此时如果重新启动IDEA,原先的Work文件将会删掉,然后新创建一个新的work文件,里面却没有原先的work文件数据了