WebLogic集群HttpSession共享,Nginx反向代理环境,Ajax请求cookie被重置问题

4 篇文章 0 订阅
1 篇文章 0 订阅

新接手的一个项目,在单机上部署,登录访问没有问题,但是部署在Weblogic集群上后,从Nginx反向代理登录发现登录不上,这个需要配置weblogic.xml文件,网上能找到很多资料在weblogic.xml文件中添加

<session-descriptor>

<persistent-store-type>replicated_if_clustered</persistent-store-type>

<sharing-enabled>true</sharing-enabled>

</session-descriptor>

接着,很诡异的事情发生了,登录上去后,先是发现页面有些不正常,页面上有一个菜单树,是动态加载的,有时能加载进来,有时又加载不进来,页面刷新刷者刷着,就发现从登录态变成未登录的了,以为是服务端httpsession共享没有成功,于是写了一段代码,写一个数据到session,然后再访问一个页面获取session中是否有数据,并读取机器的IP地址一并显示出来,发现集群中的每台服务器都存在session中的数据,也就是httpsession共享成功了,那我就怀疑是服务端哪有代码清除了session。

经过一段事件的寻找,发现服务端代码没有找到相关代码,我就刷新页面寻找,发现登录后刷新页面,在加载的过程中,出现某次请求后,浏览器的cookie被设置了一个新的cookie,相当于服务端给客户端换了个HTTP Session,这就有点奇怪了,那应该还是服务端的问题,可是我把加载出现cookie被重置的那个请求单独拿出来从浏览器地址栏访问,刷新,无论刷新多少次,cookie都不会被重置,那我就怀疑是不是jQuery的Ajax请求导致的问题,然后观察其他类似页面,发现也有这个问题,于是我又单独写了个页面用Ajax请求服务端,服务端读取客户端的Cookie值,并返回显示到客户端:

<div id='ct'><div>

<script type="text/javascript">

function check(){

      function onReturn(result){

            ct.innerHTML = result;

            setTimeout(check, 1000);

      }

     $.ajax({

        url:'a.jsp',

        type='get',

        dataType='text',

         success:onReturn

     });

}

check();

</script>


这样请求,发现没有问题,cookie不会被重置

然后我觉得是不是访问太慢了,所以体现不出问题,然后改成如下:

<div id='ct'><div>

<script type="text/javascript">

function check(){

      function onReturn(result){

            ct.innerHTML = result;

           check();

      }

     $.ajax({

        url:'a.jsp',

        type='get',

        dataType='text',

         success:onReturn}

     );

}

check();

</script>

这样访问够快了吧,嗯,还是不出问题!!

当我再次改动,终于发现问题了!

function check(){

      function onReturn(result){

            ct.innerHTML = result;

      }

     $.ajax({

        url:'a.jsp',

        type='get',

        dataType='text',

         success:onReturn

     });

}

function a(){

      check();

      check();

      check();

     check();

    setTimeout(a, 3000);

}

a();

</script>

这回体现出问题了,问题估计就是处在当一个Ajax请求还没有返回时,又发起了另外的请求,就会出这个问题,根本原因还没有功夫去深究,到底时Nginx的问题还是weblogic集群的问题还没有去查,但是已经可以帮助我暂时解决问题了。


这个问题,我又做了个实验,发现单机的Web服务,Ajax并发访问,不会出这种问题,也就是说,我只是找到了在集群、Nginx反向代理情况下,从客户端触发这种问题出现的条件,而真正的问题,还是应该从Nginx的配置,weblogic的配置上去查找具体原因。有遇到类似问题的朋友,欢迎留言交流,谢谢!


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值