最近發現項目運行過程當中常常會拋出一個 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"));複製代碼