同一个tamcat下发布两个web项目,session共享的问题
在项目A中,登录时,将session放到context中:
ServletContext ContextA = session.getServletContext();
ContextA.setAttribute("Appsess", session);
HttpSession se = (HttpSession)ContextA.getAttribute("Appsess");
在项目B中,写一个过滤器,过滤器中的代码如下:
……
HttpSession session1 = (HttpSession) arg0.getSession();;
ServletContext Context = session1.getServletContext();
ServletContext ContextA= Context.getContext("/sale_2012");
HttpSession session2 =(HttpSession)ContextA.getAttribute("Appsess");
……
tomcat的server配置如下:
<Host name="127.0.0.1" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/sale_2012" path="" reloadable="true" crossContext="true" >
<Resource name="jdbc/default" auth="Container" description="DB Connection" type="javax.sql.DataSource"
maxActive="20"
maxIdle="4"
maxWait="10000"
username="***"
password="***"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"
/>
</Context>
</Host>
<Host name="127.0.0.1" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context docBase="/springmvcweb" path="" reloadable="true" crossContext="true" >
<Resource name="jdbc/default" auth="Container" description="DB Connection" type="javax.sql.DataSource"
maxActive="20"
maxIdle="4"
maxWait="10000"
username="***"
password="***"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@127.0.0.1:1521:ORCL"
/>
</Context>
</Host>
但从项目B中的过滤器中由context中取出来的session2就是为空,百思不得其解。请求大神指点! tomcat???session共享
[解决办法]
<Context crossContext="true" docBase="d:/sale_2012" path="/sale_2012" reloadable="false"/>
你这个配置的有问题。
[解决办法]
path="/sale_2012" 你在代码里用到了这个路径(/sale_2012),你映射的时候没有。
<Context crossContext="true" docBase="d:/xxx/tomcat/webapp/sale_2012" path="/sale_2012" reloadable="false"/>