首先简单描述下项目的环境
开发环境: Tomcat 6.0 + apache2.2 + eclipse3.4 + jdk 6
正式环境: Tomcat 6.0 群集 + apache2.2 + jk mod + Echcache 页面缓存 + jdk 6
[b]注意: 正式环境是在一台机器上,配置 apache 和多个 tomcat[/b]
Acegi 1.0.7 版本
Acegi 设定的权限管控为 所有页面都可以访问,但是填写资料,需要登陆操作
首页是 index.jsp , 其他链接,均为 ***.action 的方式
首页的登陆框 实现 acegi 的 ajax 登陆操作,登陆成功,登陆框会切换成 用户名 + 欢迎词 + 退出,登陆不成功,会提示密码或帐号错误,继续登陆。
在开发环境下,一切正常。
部署到正式环境后,出现下面两种错误:
1、输入用户名密码后,登陆成功,但是 登陆框不会切换,点击任何一个栏目进入后,在页面顶部会显示 欢迎 用户名 (表示登陆成功,如果登陆不成功,这里会显示 : 登陆 注册 的链接 )
2、由于正式环境采用了 apache + jk + tomcat 集群 的方式, 在 worker 的配置中,设定了 sticky_session = 1。 其他配置属于正常配置 ,这里出现了一个奇怪的事情: 第一次访问首页时, 登陆框会显示: 欢迎 某某某 的字样,也就是是已经登陆了,但是我还没有登陆,而且 某某某 的用户名是随机显示的,当点击 个人资料时,却又跳转到 登陆画面,显然,当前的这个 session 并未登陆成功,还是需要登陆操作,登陆成功后 , 任何页面的顶部都会正确显示 用户名,只有 index.jsp 页面不会正常显示。
页面顶部采用 header.jsp 页面编写, 在查看是否有权限时,是通过 这样的写法判断是否有用户登陆,然后获取用户名,任何情况下,都不会出错,首页也是同样的写法,可是,却会出现以上问题。。
请教各位。。是不是因为复合环境下,会出现以上错误?
我做过如下测试:
1、将 集群的 tomcat 关闭到只剩下一个,然后测试, 不会出现 别人的用户名出现在 index.jsp 页面, 但是登陆依旧存在问题
2、将 header.jsp 的代码 copy 到 index.jsp 页面,还是无法起作用
3、将 echcache 的页面缓存关闭, 发现问题好转,是否 页面缓存会让 index.jsp 页面无法正常刷新?
另外,正式环境是不能关闭 页面缓存,效率会差很多。。。
还请各位指点!!