Tomcat在不同web应用程序中共享数据

1. 下载Tomcat5.5,这里使用的Tomcat5.x版本,对于Tomcat6.x应该是类似的配置;

 

2. 添加三个配置文件,文件名和内容如下:

 

 

conf/Catalina/localhost/jsp-examples-share.xml
<textarea cols="50" rows="15" name="code" class="xhtml">&lt;Context docBase="${catalina.home}/webapps/jsp-examples-share" crossContext="true" privileged="true" antiResourceLocking="false" antiJARLocking="false"&gt; &lt;/Context&gt;</textarea> 
conf/Catalina/localhost/jsp-examples-1.xml
<textarea cols="50" rows="15" name="code" class="xhtml">&lt;Context docBase="${catalina.home}/webapps/jsp-examples-1" crossContext="true" privileged="true" antiResourceLocking="false" antiJARLocking="false"&gt; &lt;/Context&gt;</textarea> 
conf/Catalina/localhost/jsp-examples-2.xml
<textarea cols="50" rows="15" name="code" class="xhtml">&lt;Context docBase="${catalina.home}/webapps/jsp-examples-2" crossContext="true" privileged="true" antiResourceLocking="false" antiJARLocking="false"&gt; &lt;/Context&gt;</textarea> 
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下,文件内容如下:
<textarea cols="50" rows="15" name="code" class="xhtml">&lt;html&gt; &lt;head&gt; &lt;title&gt;&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;% String mydata = request.getParameter("mydata"); if (mydata != null &amp;&amp; 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")); } %&gt; &lt;form&gt; &lt;input type=text size=20 name="mydata"&gt; &lt;br&gt; &lt;input type=submit&gt; &lt;/form&gt; &lt;/body&gt; &lt;/html&gt;</textarea> 
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

 

你可能感兴趣的:(tomcat,Web,session,String,null,application)