hi45 2010-10-13 00:18
浏览 164
已采纳

关于Acegi 在 复合环境下的奇妙错误,请教!!

首先简单描述下项目的环境
开发环境: 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 页面无法正常刷新?

另外,正式环境是不能关闭 页面缓存,效率会差很多。。。

还请各位指点!!

  • 写回答

1条回答 默认 最新

  • uncontrolsheep 2010-10-14 19:34
    关注

    看您的描述应该是页面缓存的原因,没研究过页面缓存的原理,我觉得原则是缓存应该缓存的东西,如果不适用于缓存的情况您利用缓存可能得到反效果,虽然效率高了,但是正确性得不到保证,效率再高也没用啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序