同一個Tomcat下不一樣項目之間的session共享

最近發現項目運行過程當中常常會拋出一個 NullPointerException的異常,經檢查發現異常出現的地方是日誌模板,一陣檢查,正常無誤web

(把全部記錄日誌的地方都點了一遍,內心是崩潰的),萬念俱灰下忽然想起來還有一個項目的業務也鏈接到這個項目,抱着試試的心態去那裏tomcat

執行了下方法,果真,異常出現了,項目A裏獲取不到項目B的session。無奈,根據資料作了個session共享,具體方法以下:session

項目名稱 A:testA,B:testBapp

1 : 修改Tomcat---conf----server.xml文件webapp

把 <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false"></Host> 修改成:
複製代碼

         

  

2: 在項目A中,寫入如下代碼:測試

   //如下內容用於測試同一tomcat下不一樣項目之間共享session   HttpSession session = req.getSession();spa

   session.setAttribute("test", "testA");日誌

// session失效時間,單位毫秒
複製代碼

   session.setMaxInactiveInterval(6000);code

  ServletContext contextA = req.getSession().getServletContext();server

contextA.setAttribute("session", req.getSession());
複製代碼

3.在項目B中,使用如下代碼取出 session

  HttpSession session = req .getSession();

ServletContext context = session.getServletContext();  
複製代碼

  // 這裏面傳遞的是項目a的虛擬路徑

ServletContext context1= context.getContext("/testA");

     System.out.println(context1);

    HttpSession session2 = (HttpSession) context1.getAttribute("session");

    System.out.println("項目A傳過來的值 : "+session2.getAttribute("test"));複製代碼
相關文章
相關標籤/搜索