当前位置: 首页 > 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.w-s-a.com/news/276417/

相关文章:

  • 国家企业官方网站查询系统站酷设计网站官网入口文字设计
  • 彩票网站开发制作需要什么wordpress连接微博专业版v4.1
  • 孝感建设银行官网站百度一下你就知道啦
  • 做网站如何做视频广告制作公司简介怎么写
  • 做网站 买空间商务网站内容建设包括
  • 萝岗网站建设为什么点不开网站
  • 惠州网站制作询问薇北京网站建设最便宜的公司
  • 注册网站英语怎么说wordpress 3.8.3
  • 甘肃张掖网站建设网站开发软件是什么专业
  • 海口省建设厅网站网站数据库怎么做同步
  • 做网站建设月收入多少app开发公司广州英诺
  • 新闻播报最新网站优化外包费用
  • wordpress分页出现404最专业的seo公司
  • 连云港网站建设电话连云港市建设局网站
  • 平面设计网站有哪些比较好drupal网站建设 北京
  • 健康资讯网站模板网页价格表
  • 2008发布asp网站宝安建网站的公司
  • 郑州市城市建设管理局网站制作公司网站 优帮云
  • 网站开发 瀑布结构普陀网站建设
  • 12380网站建设情况汇报plone vs wordpress
  • c 网站开发数据库连接与wordpress类似的都有哪些
  • 状元村建设官方网站长春做网站seo的
  • 做金融资讯网站需要哪些牌照海珠营销型网站制作
  • 学做网站需要买什么书手机网络
  • 寻找做电影网站团队合作西宁网站建设君博首选
  • 兴仁县城乡建设局网站爱站关键词查询
  • 漳州网站建设公司推荐wordpress更改主机
  • c2c商城网站建设方案英文网站注册
  • 电子商务网站的运营一般需要做哪些准备宣传片拍摄思路
  • 网站建设网页制作百度怎么做自己网站