开发一个功能,应用A提供链接(A.jsp)到应用B (B.jsp),会传递一些参数。
【背景:这些应用都是部署在weblogic10服务器上,domain是同一个,server肯定不同。】在A.jsp的数据通过参数传递。
会在应用A的A.jsp中实现跳转:<script type="text/javascript">
        //跳转到应用B
window.open("http://XX.XX.XX.XX:XXXX/B.jsp?city_id="+cityID.value, "", "", "" );
</script>
在应该B的B.jsp会接收参数并处理。现在问题是,跳转到应用B后,
应用A之前保存的session会丢失掉吗【指的是在应用A中能不能重新获得原来的session,不是在应用B中】?

解决方案 »

  1.   

    会掉的。可以做个群集,就不会掉了。或者用sso,应该能实现你要的东西。
      

  2.   


    原来应用A的session在应用A中找不到了?做群集的话,是给server做群集,还是什么,不懂诶??
    请教下!
      

  3.   

    还有这个是和应用服务器有关的吗,在Tomcat中部署的话,也会这样吗?
      

  4.   

    tomcat 中session有生命周期!
    估计也不行!
      

  5.   

    如果只是a要得到a的session,可以用ajax来调用b的,在a中处理b的返回,这样,你的a的页面不会关闭的,session也就不会丢了。
      

  6.   

    b中不用返回东西给a的。但是a应用是提供了一个连接,点击这个连接就要打开应用b,这是一整块大的应用,
    应用a不能等b处理完的。相当于是,应用a提供个入口给b。
      

  7.   

    我在网上查了下,可能和weblogic的domain有关系。
    但是,我模拟了下,
    1.在同一个domain下建两个server,每个server下部署不同的应用,
    但是在应用间a跳转b时,a中session还是可以找到。
    2.在两个不同domain下分别建一个server,每个server下部署不同的应用,
    但是在应用间a跳转b时,a中session也还是可以找到。现在,有点纠结了。
      

  8.   

    按道理应该不会啊,除非你两个应用的名称是相同的!!!还有记得将你的B应用在一个新的空白窗口中打开,指定一下打开的目标为_blank试试!
      

  9.   

    session是一次对话内有用。估计页面跳转session不能丢失啊。估计你是没用实体类接值吧。
      

  10.   

    http://dtfy56924.javaeye.com/blog/545355
      

  11.   

    好像session不会丢失吧!session的作用域不是一个浏览器和服务器之间吗?会丢失session 求解?
      

  12.   

    昨天又用weblogic模拟了下,
    1.在同一个domain下建两个server,每个server下部署不同的应用,
    但是在应用间a跳转b时,a中session找不到。
    2.在两个不同domain下分别建一个server,每个server下部署不同的应用,
    但是在应用间a跳转b时,a中session也还是找不到。和之前9# 做的模拟结果不一样。不知道,大家在不同的应用服务器下,能不能模拟下效果??
      

  13.   

    你说的SSO单点登录,听说过,但我没用过。
    而且,现在不准备从应用上来改框架,
    只是单纯的应用间参数传递,session在原有应用中会丢失吗?
    以及原因。
      

  14.   

    session丢失,
    可不可以从打开新应用的地方着手修改呢?
    window.open()这个地方。
      

  15.   

    问题初步解决:
    在应用B的weblogic.xml中,加上<session-descriptor>
        <session-param>
          <param-name>CookieName</param-name>
          <param-value>BJSESSION</param-value>
        </session-param>
        <session-param>
          <param-name>PersistentStoreTable</param-name>
          <param-value>wl_servlet_sessions</param-value>
        </session-param>
      </session-descriptor>这样可以防止session的串改丢失。
      

  16.   


    服务器集群有复制SESSION的功能 楼主可以试试。
      

  17.   

    到网上查了下资料,因为weblogic服务器,
    缺省模式下,所有的WEB应用都使用一样的cookie名字(JESSIONID)。
    客户端在访问应用A时,domain会在该客户端上保留一个名为JSESSIONID的cookie,
    记录domain的信息。当同一客户端方位应用B时,该客户端的Cookie中JSESSIONID
    的值被应用B覆盖。
    因为,应用是通过保存在cookie中的jsessionid来查找session信息,所以查不到原有的session内容。
    所以,用了24#的重新设定cookiename的方法,解决了这个问题。
    不知道,以上的解释有没有不对的地方?现在问题是,网上有好多说,Tomcat服务器不会发生这种覆盖的问题。
    1、Tomcat中,难道不是通过jsessionid来查找session信息的吗?【或者说分配的jsessionid不一样?】
    2、weblogic中,明明是两个不同的应用,难道weblogic服务器不给应用分配不同的内存空间吗,
       即使jsessionid是一样的,那不同的应用查找session内容的地址也应该不一样啊,难道是
       查找同一块区域?
    3、weblogic.xml中配置的这个cookie是session cookie吗,也就是指存在会话中,不会存在本地硬盘中
       吗?因为我在本地下貌似没找到这个cookie信息。
      

  18.   


    同域不会丢失
    不同域会丢失PS:我刚研究了集群的东西,有SESSION复制的内容,你可以去看看我写的。
    主要是中间件的配置,不过我用的是TOMCAT给你抛砖引玉吧。
    http://user.qzone.qq.com/19810109/blog/1289833575
      

  19.   

    谢谢。
    集群确实有SESSION赋值的功能。【只是听说过,我没研究过,哈哈。】
    但现在的生产上的应用不允许我做集群。只能通过修改weblogic.xml这种代价小的来达到目的。
    而改这个就引发了上面的27#的问题。
      

  20.   

    我自己模拟了下,weblogic.xml中配置的COOKIENAME(如:newcookie)并没有覆盖默认的JSESSIONID这个COOKIE,而是生成了一个新的配置的COOKIE(此处为newcookie)。所以,我怀疑是不是weblogic来获取session的时候,如果有在weblogic.xml配置COOKIENAME的话,是不是通过这个新配置的来查询session,没配置的话,就通过默认的JSESSIONID来查询。没有相关的文档,真纠结
      

  21.   

    你的文章是关于Tomcat负载均衡的,
    呵呵,
    这个我没搞过,
    学习下。
      

  22.   


    用FireFox浏览器,试了下,从FireFox的【工具】-【隐私】选项卡空,看了下cookie信息,
    在weblogic.xml都配置了COOKIENAME的时候,
    并没有JSESSIONID,只有weblogic.xml配置的cookie,(和IE不同)
    而且过期时间是,会话结束时,也就是session cookie。
      

  23.   

    FireFox下,如果weblogic.xml中没有配置,
    两个应用域下会有JSESSIONID的cookie存在。(也是session cookie)
      

  24.   

    FireFox下的FireBug是个不错的工具。推荐使用。
      

  25.   

    自己解决吧,重新配置COOKIENAME的话,并不会覆盖默认的JSESSIONID,而是会生成一个新的配置的,
    session进行根据sessionid取值时,取的是新配置的sessionid的session。
      

  26.   

    这是跨域的吧,应该过去就接受不到了sessionid