当前位置: 首页 > news >正文

可视化响应式网站建设望京 网站开发

可视化响应式网站建设,望京 网站开发,个人域名备过案了做电影网站会查吗,冲浪网站优化网做web开发的肯定都知道#xff0c;cookie和session。不过刚开始#xff0c;很多人都只是停留在概念上的理解。今天就以看得见的方式再理解一下session。通过查看tomcat源码#xff0c;可以发现sessions就是一个ConcurrentHashMap。 StandardManger负责管理session的生命周期… 做web开发的肯定都知道cookie和session。不过刚开始很多人都只是停留在概念上的理解。今天就以看得见的方式再理解一下session。通过查看tomcat源码可以发现sessions就是一个ConcurrentHashMap。 StandardManger负责管理session的生命周期。如session过期了就把它清除掉。tomcat关闭时把session信息持久化到硬盘上。tomcat启动时就把session信息加载进内存。StandardManager.doUnload方法在tomcat关闭时被调用看一下方法的逻辑 /*** Save any currently active sessions in the appropriate persistence* mechanism, if any. If persistence is not supported, this method* returns without doing anything.** exception IOException if an input/output error occurs*/protected void doUnload() throws IOException {if (log.isDebugEnabled())log.debug(Unloading persisted sessions);// Open an output stream to the specified pathname, if anyFile file file();if (file null)return;if (log.isDebugEnabled())log.debug(sm.getString(standardManager.unloading, pathname));FileOutputStream fos null;ObjectOutputStream oos null;try {fos new FileOutputStream(file.getAbsolutePath());oos new ObjectOutputStream(new BufferedOutputStream(fos));} catch (IOException e) {log.error(sm.getString(standardManager.unloading.ioe, e), e);if (oos ! null) {try {oos.close();} catch (IOException f) {;}oos null;}throw e;}// Write the number of active sessions, followed by the detailsArrayList list new ArrayList();synchronized (sessions) {if (log.isDebugEnabled())log.debug(Unloading sessions.size() sessions);try {oos.writeObject(new Integer(sessions.size()));Iterator elements sessions.values().iterator();while (elements.hasNext()) {StandardSession session (StandardSession) elements.next();list.add(session);((StandardSession) session).passivate();session.writeObjectData(oos);}} catch (IOException e) {log.error(sm.getString(standardManager.unloading.ioe, e), e);if (oos ! null) {try {oos.close();} catch (IOException f) {;}oos null;}throw e;}}// Flush and close the output streamtry {oos.flush();oos.close();oos null;} catch (IOException e) {if (oos ! null) {try {oos.close();} catch (IOException f) {;}oos null;}throw e;}// Expire all the sessions we just wroteif (log.isDebugEnabled())log.debug(Expiring list.size() persisted sessions);Iterator expires list.iterator();while (expires.hasNext()) {StandardSession session (StandardSession) expires.next();try {session.expire(false);} catch (Throwable t) {;} finally {session.recycle();}}if (log.isDebugEnabled())log.debug(Unloading complete);} 逻辑很简单就是通过文件流将sessions写到硬盘上。这个文件到底是什么样子的呢可以通过tomcat自带的host-manager来看一下打开${tomcat_root}/work/Catalina/${host}/host-manager路径SESSIONS.ser就存储着session中的数据。tomcat启动完成后会自动删除这个文件。如下图 tomcat启动的时候会把读取这个文件恢复sessions。 /*** Load any currently active sessions that were previously unloaded* to the appropriate persistence mechanism, if any. If persistence is not* supported, this method returns without doing anything.** exception ClassNotFoundException if a serialized class cannot be* found during the reload* exception IOException if an input/output error occurs*/protected void doLoad() throws ClassNotFoundException, IOException {if (log.isDebugEnabled())log.debug(Start: Loading persisted sessions);// Initialize our internal data structuressessions.clear();// Open an input stream to the specified pathname, if anyFile file file();if (file null)return;if (log.isDebugEnabled())log.debug(sm.getString(standardManager.loading, pathname));FileInputStream fis null;ObjectInputStream ois null;Loader loader null;ClassLoader classLoader null;try {fis new FileInputStream(file.getAbsolutePath());BufferedInputStream bis new BufferedInputStream(fis);if (container ! null)loader container.getLoader();if (loader ! null)classLoader loader.getClassLoader();if (classLoader ! null) {if (log.isDebugEnabled())log.debug(Creating custom object input stream for class loader );ois new CustomObjectInputStream(bis, classLoader);} else {if (log.isDebugEnabled())log.debug(Creating standard object input stream);ois new ObjectInputStream(bis);}} catch (FileNotFoundException e) {if (log.isDebugEnabled())log.debug(No persisted data file found);return;} catch (IOException e) {log.error(sm.getString(standardManager.loading.ioe, e), e);if (ois ! null) {try {ois.close();} catch (IOException f) {;}ois null;}throw e;}// Load the previously unloaded active sessionssynchronized (sessions) {try {Integer count (Integer) ois.readObject();int n count.intValue();if (log.isDebugEnabled())log.debug(Loading n persisted sessions);for (int i 0; i n; i) {StandardSession session getNewSession();session.readObjectData(ois);session.setManager(this);sessions.put(session.getIdInternal(), session);session.activate();session.endAccess();}} catch (ClassNotFoundException e) {log.error(sm.getString(standardManager.loading.cnfe, e), e);if (ois ! null) {try {ois.close();} catch (IOException f) {;}ois null;}throw e;} catch (IOException e) {log.error(sm.getString(standardManager.loading.ioe, e), e);if (ois ! null) {try {ois.close();} catch (IOException f) {;}ois null;}throw e;} finally {// Close the input streamtry {if (ois ! null)ois.close();} catch (IOException f) {// ignored}// Delete the persistent storage fileif (file ! null file.exists() )file.delete();}}if (log.isDebugEnabled())log.debug(Finish: Loading persisted sessions);} 以上整体的逻辑就是通过文件流读取SESSIONS.ser并恢复sessions。我这里提到的启动、关闭tomcat是指通过startup、shutdown命令。如果直接kill掉tomcat进程以上操作还没来得及执行进程就挂掉了。
http://www.hkea.cn/news/14505010/

相关文章:

  • 扁平化网站后台网站建设设计
  • 易尔通做网站怎么样网站设置文件
  • 聊城网站那家做的好网站开发项目立项报告范文
  • 最高级网站建设著名建筑网站
  • 精品课程网站开发平台网站建设课程思政
  • 单位网站查询工资链接怎么做福田时代汽车官方网站
  • 可以做免费推广的网站有哪些安卓开发软件安装教程
  • 学校网站建设方面汇报备案时网站名称怎么写
  • 建站seo怎么赚钱免费商城网站建设平台
  • 彭州做网站建设厅网站账户名忘记了怎么办
  • 房地产网站建设方案php学什么可以做网站
  • 网站永久镜像怎么做正能量erp软件下载网站
  • 问答系统网站模板网站界面ui设计国家开放大学答案
  • 网站301定向电脑建网站软件
  • jsp网站开发中js的问题php网站后台模版
  • 做直播网站用什么语言简单好看的logo图片
  • 网站的外部链接怎么做外贸网络营销实战
  • 南京移动网站建设效果好哪个网站做ppt
  • 基木鱼建站网站优化含义
  • 用vs2010做免费网站模板下载地址色无极网站正在建设中
  • 怎么修改网站源文件超能力联盟网站
  • 网站页面设计优化方案建设网站主机
  • 架设网站的目的微信开放平台是做什么的
  • 网站设计软件网站的注册上一步下一步怎么做
  • 大气腐蚀网站建设湛江seo建站
  • 安徽省住房与城乡建设部网站花店网站建设需求
  • 四川电子商务网站wordpress vul
  • 免费手机网站app湛江市工程建设领域网站
  • 湖南城乡和建设厅网站天元建设集团有限公司商业承兑汇票
  • 怎么才能自己做网站e福州app官方网站