|
1. 下载Tomcat5.5,这里使用的Tomcat5.x版本,对于Tomcat6.x应该是类似的配置;
2. 添加三个配置文件,文件名和内容如下:
conf/Catalina/localhost/jsp-examples-share.xml
<Context docBase="${catalina.home}/webapps/jsp-examples-share" crossContext="true" privileged="true" antiResourceLocking="false" antiJARLocking="false"></Context>
conf/Catalina/localhost/jsp-examples-1.xml
<Context docBase="${catalina.home}/webapps/jsp-examples-1" crossContext="true" privileged="true" antiResourceLocking="false" antiJARLocking="false"></Context>
conf/Catalina/localhost/jsp-examples-2.xml
<Context docBase="${catalina.home}/webapps/jsp-examples-2" crossContext="true" privileged="true" antiResourceLocking="false" antiJARLocking="false"></Context>
3. 这里简单起见,使用Tomcat5.x自带的例子应用程序jsp-examples,复制jsp-examples成三个新的应用程序,分别为jsp-examples-share, jsp-examples-1和jsp-examples-2;
4. 创建一个test.jsp文件,并将其放置到上面创建的三个web应用程序jsp-examples-share, jsp-examples-1和jsp-examples-2下,文件内容如下:
<html><head><title></title></head><body><%String mydata = request.getParameter("mydata");if (mydata != null && mydata.length() != 0) {session.getServletContext().getContext("/jsp-examples-share").setAttribute("mydata", mydata);;}if (session.getServletContext().getContext("/jsp-examples-share") != null) {out.println("mydata from context: " + session.getServletContext().getContext("/jsp-examples-share").getAttribute("mydata"));}%><form><input type=text size=20 name="mydata"><br><input type=submit></form></body></html>
5. 测试。
启动Tomcat,访问http://localhost:8080/jsp-examples-share,然后设置mydata的值
访问http://localhost:8080/jsp-examples-1和http://localhost:8080/jsp-examples-2,此时会看到在jsp-examples-share中设置的值已经可以在另两个应用程序中访问了。
问题:这种实现确实解决了多个web app之间数据共享的问题,但是他的共享是类似于application级别,而不是session级别的,所以他只能共享一些全局和用户无关的信息,如果需要共享和用户相关的信息,就需要加一些约束来存储数据,并且需要加一个listener去清理过期数据。
参考资料:
http://tomcat.apache.org/tomcat-5.5-doc/config/context.html |
|
|
|
|
|
|