最近發現項目運行過程中經常會拋出一個 NullPointerException的異常,經檢查發現異常出現的地方是日志模板,一陣檢查,正常無誤
(把所有記錄日志的地方都點了一遍,心里是崩潰的),萬念俱灰下突然想起來還有一個項目的業務也連接到這個項目,抱着試試的心態去那里
執行了下方法,果然,異常出現了,項目A里獲取不到項目B的session。無奈,根據資料做了個session共享,具體方法如下:
項目名稱 A:testA,B:testB
1 : 修改Tomcat---conf----server.xml文件
把 <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false"></Host> 修改為:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">
<Context path="/testA" reloadable="false" crossContext="true"></Context>
<Context path="/testB" reloadable="false" crossContext="true"></Context>
</Host>
2: 在項目A中,寫入以下代碼:
//以下內容用於測試同一tomcat下不同項目之間共享session
HttpSession session = req.getSession();
session.setAttribute("test", "testA");
// session失效時間,單位毫秒
session.setMaxInactiveInterval(6000);
ServletContext contextA = req.getSession().getServletContext();
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"));
