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

网站建设技术员工资婚庆网站建设论文

网站建设技术员工资,婚庆网站建设论文,seo网络营销公司,老婆中文字幕完整版第二季做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.dnsts.com.cn/news/53873.html

相关文章:

  • 郑州区块链数字钱包网站开发过程十大免费网站推广入口
  • 南京网站建设公司平面设计好就业吗
  • 全球最大的设计网站建设好网站能赚到钱吗
  • 在线画画网站seo排名优化服务
  • 网站建设的意义与目的专门做研究美股的财经网站
  • 做房产中介网站群晖 wordpress 阿里云
  • 徐州做网站图床外链生成工具
  • 电气网站设计无锡网站建设营销型
  • 建设网站赚的是什么钱留言板网站模板
  • 网站备案 取名资讯通不过做空包网站
  • 室内设计找工作网站好用的开发工具
  • 网站建设工作下步打算企业网站建设的建站前准备
  • 淄博企业做网站ui设计需要学编程吗
  • 公司网站的重要性免费个人名片生成器
  • 微信菜单栏那些网站怎么做室内设计图片效果图
  • 租用服务器网站编程怎样自学
  • 鞍山 网站建设自助建站系统源码
  • 网站加入视频电子公司网页设计
  • 奉贤建设机械网站服装网站建设规划书
  • 专业网站制作流程商标交易网
  • 普兰店网站建设公司php 7 wordpress
  • 网站怎么做文件上传网站的切换语言都是怎么做的
  • 荆门哪里做网站青岛网站建设哪家好
  • 信用网站建设成效重庆哪家做网站好
  • 网站开发建设账务处理程序上海做网站品牌公司有哪些
  • 这几年做啥网站能致富wordpress备份整站
  • 东莞网站推广设计博物馆设计网站推荐
  • 长沙建站做企业网站公司英文wordpress转中文乱码
  • 如何建立新的企业网站青岛网站制作流程
  • 域名链接网站张家港营销型网站建设