想实现两件事!一.两台server的session复制.我的做法1.在A机器安装TOMCAT5.525.
在server.xml中,去掉关于Cluster注释。设置好了Engine元素的jvmRoute的属性。在应用的web.xml中增加了<distributable/>。
2.在B机器安装TOMCAT5.525.
在server.xml中,去掉关于Cluster注释。设置好了Engine元素的jvmRoute的属性。在应用的web.xml中增加了<distributable/>。
3.启动A,B机器,TOMCAT显示成功,后台没有报告错误。两台都启动后,关闭其中一台的TOMCAT,另外一台的TOMCAT有对应提示。感觉
配置成功了。
可是我在A机,打开浏览器,执行一个.jsp,该jsp的功能是向session里放一个Msg对象,该对象已经继承Serializable。
然后我在B机,打开浏览器,执行一个.jsp,该jsp的功能是从session里取出一个Msg对象,按说如果session已经复制,那应该能取出刚才A机已经放入Seesion的Msg对象。
可是取出来的是NULL为什么啊?参考文献:http://tomcat.jaxmao.org/cluster-howto.html
二.我想在同一个Tomcat下的不同应用,共享Session.我的做法
1.修改server.xml内容如下
<!--应用一-->
<Host name="www.app.com" appBase="C:/app" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="C:/app" debug="1" reloadable="true" crossContext="true">
</Context>
</Host>
<!--应用二(同应用一的后缀一样都是xxx.app.com)-->
<Host name="admin.app.com" appBase="C:/appadmin" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="C:/appadmin" debug="1" reloadable="true" crossContext="true">
</Context>
</Host> 可是我在浏览器中,执行一个www.app.com应用的.jsp,该jsp的功能是向session里放一个Msg对象,该对象已经继承Serializable。
然后不关闭这个浏览器,修改url为admin.app.com应用的一个.jsp,该jsp的功能是从session里取出一个Msg对象,按说如果session已经共享,那应该能取出刚才www.app.com应用,已经放入Seesion的Msg对象。
可是取出来的是NULL为什么啊?
-------------------------------------
<Host.............>
<Context path="/one" docBase="C:/dir1" debug="1" reloadable="true" crossContext="true">
</Context>
<Context path="/two" docBase="C:/dir2" debug="1" reloadable="true" crossContext="true">
</Context>
</Host>
最后我修改xml文件为一个HOST下的多个应用,发现上面的测试也过不去!为什么啊?
参考文献:http://hi.baidu.com/chenxiaowen/blog/item/e6a15c82c26a69a30df4d210.html
"""
可是我在A机,打开浏览器,执行一个.jsp,该jsp的功能是向session里放一个Msg对象,该对象已经继承Serializable。
然后我在B机,打开浏览器,执行一个.jsp,该jsp的功能是从session里取出一个Msg对象,按说如果session已经复制,那应该能取出刚才A机已经放入Seesion的Msg对象。
"""而是应该:
* 把A机绑定成app1.app.com,B机绑定成app2.app.com
* 访问app1.app.com ,设置session值
* =同一个浏览器= 访问app2.app.com,得到session值
wolfw(阿干) 我这个就是在同一个浏览器上的........可是为什么也不能得到啊
-----------------------
二.我想在同一个Tomcat下的不同应用,共享Session.我的做法
1.修改server.xml内容如下
<!--应用一-->
<Host name="www.app.com" appBase="C:/app" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="C:/app" debug="1" reloadable="true" crossContext="true">
</Context>
</Host>
<!--应用二(同应用一的后缀一样都是xxx.app.com)-->
<Host name="admin.app.com" appBase="C:/appadmin" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="C:/appadmin" debug="1" reloadable="true" crossContext="true">
</Context>
</Host> 可是我在浏览器中,执行一个www.app.com应用的.jsp,该jsp的功能是向session里放一个Msg对象,该对象已经继承Serializable。
然后不关闭这个浏览器,修改url为admin.app.com应用的一个.jsp,该jsp的功能是从session里取出一个Msg对象,按说如果session已经共享,那应该能取出刚才www.app.com应用,已经放入Seesion的Msg对象。
可是取出来的是NULL为什么啊?
-------------------------------------
<Host.............>
<Context path="/one" docBase="C:/dir1" debug="1" reloadable="true" crossContext="true">
</Context>
<Context path="/two" docBase="C:/dir2" debug="1" reloadable="true" crossContext="true">
</Context>
</Host>
最后我修改xml文件为一个HOST下的多个应用,发现上面的测试也过不去!为什么啊?
参考文献:http://hi.baidu.com/chenxiaowen/blog/item/e6a15c82c26a69a30df4d210.html
第二个问题好象IBM已经解决啦!!好象是整合多个系统用同一帐号的登陆问题.(IBM的门户网不就已经解决啦!!)...至于怎么解决我想方法肯定有很多种!!呵呵......我不知道啦!!
可能是 tomcat 默认通过 cookie 实现 session 的原因造成的, 浏览器端对不同域名不给共享cookie
你开启两个tomcat后
访问第一个 session.getId()
可以看到session信息在tomcat1中输出。然后关闭TOMCAI1,再刷新访问TOMCAT1的那个浏览器,会发现TOMCAT2上有1的值