应用间跳转,原来应用的session值会不会丢失。

chan10 2010-11-12 04:06:48
开发一个功能,应用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中】?
...全文
452 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
IT_lau 2010-11-18
  • 打赏
  • 举报
回复
这是跨域的吧,应该过去就接受不到了。。。sessionid
chan10 2010-11-17
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 chan10 的回复:]

我自己模拟了下,weblogic.xml中配置的COOKIENAME(如:newcookie)并没有覆盖默认的JSESSIONID这个COOKIE,而是生成了一个新的配置的COOKIE(此处为newcookie)。

所以,我怀疑是不是weblogic来获取session的时候,如果有在weblogic.xml配置COOKIENAME的话,是不是通过这个新配置的来查询session,没配置的……
[/Quote]
自己解决吧,重新配置COOKIENAME的话,并不会覆盖默认的JSESSIONID,而是会生成一个新的配置的,
session进行根据sessionid取值时,取的是新配置的sessionid的session。
chan10 2010-11-16
  • 打赏
  • 举报
回复
你的文章是关于Tomcat负载均衡的,
呵呵,
这个我没搞过,
学习下。
chan10 2010-11-16
  • 打赏
  • 举报
回复
我自己模拟了下,weblogic.xml中配置的COOKIENAME(如:newcookie)并没有覆盖默认的JSESSIONID这个COOKIE,而是生成了一个新的配置的COOKIE(此处为newcookie)

所以,我怀疑是不是weblogic来获取session的时候,如果有在weblogic.xml配置COOKIENAME的话,是不是通过这个新配置的来查询session,没配置的话,就通过默认的JSESSIONID来查询。

没有相关的文档,真纠结。。。
chan10 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 zhuchao_ko 的回复:]

引用 28 楼 chan10 的回复:
这问题为什么没人回呢,搞不懂。


同域不会丢失
不同域会丢失

PS:我刚研究了集群的东西,有SESSION复制的内容,你可以去看看我写的。
主要是中间件的配置,不过我用的是TOMCAT给你抛砖引玉吧。
http://user.qzone.qq.com/19810109/blog/1289833575
[/Quote]
谢谢。
集群确实有SESSION赋值的功能。【只是听说过,我没研究过,哈哈。】
但现在的生产上的应用不允许我做集群。

只能通过修改weblogic.xml这种代价小的来达到目的。
而改这个就引发了上面的27#的问题。
宁波朱超 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 chan10 的回复:]
这问题为什么没人回呢,搞不懂。
[/Quote]

同域不会丢失
不同域会丢失

PS:我刚研究了集群的东西,有SESSION复制的内容,你可以去看看我写的。
主要是中间件的配置,不过我用的是TOMCAT给你抛砖引玉吧。
http://user.qzone.qq.com/19810109/blog/1289833575
chan10 2010-11-16
  • 打赏
  • 举报
回复
这问题为什么没人回呢,搞不懂。
sytu_ckx 2010-11-16
  • 打赏
  • 举报
回复
FireFox下的FireBug是个不错的工具。推荐使用。
sytu_ckx 2010-11-16
  • 打赏
  • 举报
回复
FireFox下,如果weblogic.xml中没有配置,
两个应用域下会有JSESSIONID的cookie存在。(也是session cookie)
sytu_ckx 2010-11-16
  • 打赏
  • 举报
回复
[Quote=引用 31 楼 chan10 的回复:]

我自己模拟了下,weblogic.xml中配置的COOKIENAME(如:newcookie)并没有覆盖默认的JSESSIONID这个COOKIE,而是生成了一个新的配置的COOKIE(此处为newcookie)。

所以,我怀疑是不是weblogic来获取session的时候,如果有在weblogic.xml配置COOKIENAME的话,是不是通过这个新配置的来查询session,没配置的……
[/Quote]

用FireFox浏览器,试了下,从FireFox的【工具】-【隐私】选项卡空,看了下cookie信息,
在weblogic.xml都配置了COOKIENAME的时候,
并没有JSESSIONID,只有weblogic.xml配置的cookie,(和IE不同)
而且过期时间是,会话结束时,也就是session cookie。
chan10 2010-11-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的串改丢失。
chan10 2010-11-15
  • 打赏
  • 举报
回复
到网上查了下资料,因为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信息。
bjvfubj 2010-11-15
  • 打赏
  • 举报
回复
围观中。。。。。。
宁波朱超 2010-11-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 chan10 的回复:]
开发一个功能,应用A提供链接(A.jsp)到应用B (B.jsp),会传递一些参数。
【背景:这些应用都是部署在weblogic10服务器上,domain是同一个,server肯定不同。】

在A.jsp的数据通过参数传递。
会在应用A的A.jsp中实现跳转:

HTML code

<script type="text/javascript">
//跳转到应用B……
[/Quote]

服务器集群有复制SESSION的功能 楼主可以试试。
sytu_ckx 2010-11-14
  • 打赏
  • 举报
回复
session丢失,
可不可以从打开新应用的地方着手修改呢?
window.open()这个地方。
chan10 2010-11-14
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 sxzlc 的回复:]
引用 16 楼 sxzlc 的回复:

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


SSO单点登录
[/Quote]
你说的SSO单点登录,听说过,但我没用过。
而且,现在不准备从应用上来改框架,
只是单纯的应用间参数传递,session在原有应用中会丢失吗?
以及原因。
chan10 2010-11-14
  • 打赏
  • 举报
回复
昨天又用weblogic模拟了下,
1.在同一个domain下建两个server,每个server下部署不同的应用,
但是在应用间a跳转b时,a中session找不到。
2.在两个不同domain下分别建一个server,每个server下部署不同的应用,
但是在应用间a跳转b时,a中session也还是找不到。

和之前9# 做的模拟结果不一样。

不知道,大家在不同的应用服务器下,能不能模拟下效果??
chan10 2010-11-14
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 fq1798 的回复:]
跳转一次不会失效,跳转二次会失效
[/Quote]
这是怎么解释??
hncdyj 2010-11-13
  • 打赏
  • 举报
回复
好像session不会丢失吧!session的作用域不是一个浏览器和服务器之间吗?会丢失session 求解?
vip2365235 2010-11-13
  • 打赏
  • 举报
回复
回话没结束 怎么掉啊
加载更多回复(17)

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧