java钝化
① java 为什么序列化
序列化可以将内存中的类写入文件或数据库中。比如将某个类序列化后存为文件,下次读取时只需将文件中的数据反序列化就可以将原先的类还原到内存中。也可以将类序列化为流数据进行传输。总的来说就是将一个已经实例化的类转成文件存储,下次需要实例化的时候只要反序列化即可将类实例化到内存中并保留序列化时类中的所有变量和状态。
例如:hibernate中实体类的钝化就是将类序列化后存入磁盘并释放内存空间。
② java实体类为什么要实现序列化
解答如下:
当客户端访问某个能开启会话功能的资源,web服务器就会创建一个HTTPSession对象,每个HTTPSession对象都会占用一定的内存,如果在同一个时间段内访问的用户太多,就会消耗大量的服务器内存,为了解决这个问题我们使用一种技术:session的持久化。
什么是session的持久化?
web服务器会把暂时不活动的并且没有失效的HTTPSession对象转移到文件系统或数据库中储存,服务器要用时在把他们转载到内存。
把Session对象转移到文件系统或数据库中储存就需要用到序列化; java.io.Serializable。
在tomcat重启的时候进行一个钝化操作、启动成功之后再进活化。
在对应的区域加载进来,不会丢失(前提是session中的存放的变量必须实现序列化接口才能钝化,才能序列到硬盘上的一个二进制文件中去)。
③ Java中为什么要序列化什么时候用到序列化
序列化可以将内存中的类写入文件或数据库中。比如将某个类序列化后存为文件,下次读取时只需将文件中的数据反序列化就可以将原先的类还原到内存中。也可以将类序列化为流数据进行传输。总的来说就是将一个已经实例化的类转成文件存储,下次需要实例化的时候只要反序列化即可将类实例化到内存中并保留序列化时类中的所有变量和状态。
例如:hibernate中实体类的钝化就是将类序列化后存入磁盘并释放内存空间。
④ 什么是java序列化,如何实现java序列化
序 列 化: 指把堆内存中的Java对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络的节点(在网络上传输).我们把这个过程称之为序列化.
反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象的过程.
为什么要做序列化:
1):在分布式系统中,需要共享的数据的JavaBean对象,都得做序列化,此时需要把对象再网络上传输,此时就得把对象数据转换为二进制形式.以后存储在HttpSession中的对象,都应该实现序列化接口(只有实现序列化接口的类,才能做序列化操作).
2):服务钝化:如果服务发现某些对象好久都没有活动了,此时服务器就会把这些内存中的对象,持久化在本地磁盘文件中(Java对象-->二进制文件).如果某些对象需要活动的时候,现在内存中去寻找,找到就使用,找不到再去磁盘文件中,反序列化我们得对象数据,恢复成Java对象.
需要做序列化的对象的类,必须实现序列化接口:java.io.Serializable接口(标志接口[没有抽象方法]).
底层会判断,如果当前对象是Serializable的实例,才允许做序列化. boolean ret = Java对象 instanceof Serializable;
在Java中大多数类都已经实现Serializable接口.
⑤ 求教servlet中的session的钝化活化机制可以人工管理吗
您好,很高兴为您解答。
微软msn摘录:
在 Java 语言中,此接口处理从一个服务器移动到另一个服务器的会话。它有两个方法:sessionWillPassivate 和 sessionDidActivate。
应该是在部署集群应用时当一个集群节点要将session转移到另一个节点时做的事
就是先钝化session(应该是存入硬盘再从结点内存删除该session)再在另一个结点活化session(从硬盘读出并加入内存)
所以作为session属性放入session的对象应该实现java.io.Serializable
如若满意,请点击右侧【采纳答案】,如若还有问题,请点击【追问】
希望我的回答对您有所帮助,望采纳!
~ O(∩_∩)O~
⑥ java 连接池 里的connections如何创建出来的,如何钝化和激活,求源码及详解
public class ConnectionFactory { private static final String driver = "com.mysql.jdbc.Driver";/*驱动不同的数据库不同的驱动,我这个是mysql的*/ private static final String url = "jdbc:mysql://localhost:3306/表名"; private static final String user = "root"; private static final String password = "密码"; private static ConnectionFactory conf; private ConnectionFactory(){} public static ConnectionFactory getCon(){ if(conf == null){ conf = new ConnectionFactory(); } return conf; } public static java.sql.Connection getConnection(){ java.sql.Connection con = null; try { Class.forName(driver); con = java.sql.DriverManager.getConnection(url, user, password); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return con; } }
⑦ javaweb钝化后的文件多少时间会消失
你是导出到桌面的文件夹里没有java文件,还是原来的工程里的java文件都没了?如果是原来的工程里的都没了,是蛮奇怪的……,你看看WEB-INF/classes下面的class文件还在不在,如果在的话是可以反编译的。可以用jd-gui反编译
⑧ java中的钝化是什么意思
服务器内存不够了,把最近不活动的session序列化到磁盘,在序列化之前你会收到监听事件
如果这个钝化的用户某个时候又访问了,服务器在内存没找到session,就去磁盘找,再反序列化到内存,这个时候你又会收到监听事件
你放入session的一切变量都必须是可序列化的,否则失败
什么时候序列化和反序列化完全由容器决定,你只能监听事件
⑨ java作用域
作用域,顾名思义,起作用的大小范围也。在Java语言中,作用域是由花括号的位置决定的,它决定了其定义的变量名的可见性与生命周期。
⑩ java web session钝化问题
钝化,没记错的话是正常关闭的时候才进行。
就是没有过期失效的都会,和1分钟,10分钟没有关系。
取决于什么时间关闭