当用户很多的时候,怎么对服务器进行优化?
这里介绍session的钝化与活化!
钝化状态:是将session内存中的对象持久化(序列化)到磁盘
活化状态:就是将磁盘上的对象再次恢复到session内存中
Customer实体类
实现 HttpSessionActivationListener,Serializable
关于实现Serializable接口 :当对象被序列化到磁盘中的时候需要实现此接口
package domain;
import java.io.Serializable;
import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionEvent;
public class Customer implements HttpSessionActivationListener,Serializable{
private int id;
private String username;
private String password;
private String realname;
private String birthday;
private String email;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRealname() {
return realname;
}
public void setRealname(String realname) {
this.realname = realname;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "Customer [id=" + id + ", username=" + username + ", password=" + password + ", realname=" + realname
+ ", birthday=" + birthday + ", email=" + email + "]";
}
@Override
public void sessionDidActivate(HttpSessionEvent arg0) {
System.out.println("活化。。。。");
}
@Override
public void sessionWillPassivate(HttpSessionEvent arg0) {
System.out.println("钝化....");
}
}
servlet :Active1
HttpSession session = request.getSession();
Customer c =(Customer) session.getAttribute("customer");
System.out.println(c.toString());
servlet :Active2
HttpSession session = request.getSession();
Customer customer = new Customer();
customer.setBirthday("2018-02-26");
customer.setEmail("[email protected]");
customer.setPassword("123");
customer.setRealname("jack");
customer.setUsername("jack123");
session.setAttribute("customer", customer);
System.out.println("set OK");
context.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<!-- maxIdleSwap:session中的对象多长时间不使用就钝化 -->
<!-- directory:钝化后的对象的文件写到磁盘的哪个目录下 配置钝化的对象文件在 work/catalina/localhost/钝化文件 -->
<Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1">
<Store className="org.apache.catalina.session.FileStore" directory="jack" />
</Manager>
</Context>
1.启动tomcat 访问Avtive1 然后关闭tomcat
查看此文件夹,发现 设置的jack文件夹
此时开启tomcat 访问Active2