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


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM