在Java web开发中,我们经常使用Tomcat来作为Java web应用的容器。关于web开发中web容器的作用,可以参考这篇文章
特别情况下,我们可能需要部署在Tomcat中的多个应用共享session,以方便在不同的应用中共享存储在session中的内容。本文介绍了如何基于Tomcat实现多应用共享session。
tomcat 配置
修改Tomcat/conf/server.xml文件
把1
2
3
4
5
6
7
8<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" x mlValidation="false"></Host>
```
修改为
```XML
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true" xmlNamespaceAware="false" x mlValidation="false">
<Context path="/project_a" reloadable="false" crossContext="true"></Context>
<Context path="/project_b" reloadable="false" crossContext="true"></Context>
</Host>
注意 crossContext 属性:设置为true,说明你可以调用另外一个WEB应用程序,通过ServletContext.getContext() 获得ServletContext 然后再调用其getAttribute() 得到你要的对象。
编写项目代码
project_a项目
1 | PrintWriter out = response.getWriter(); |
project_b项目
1 | PrintWriter out = response.getWriter(); |
进阶:共享socket套接字
project_a项目
1 | PrintWriter out = response.getWriter(); |
project_b项目
1 | PrintWriter out = response.getWriter(); |
socket服务端
1 | public static void main(String[] args) { |