weblogic单点登录session问题,服务器之间的重定向!
2010-03-02 14:43
316 查看
http://www.blogjava.net/lcs/archive/2007/09/27/148585.html
在找东西时偶然看到的觉得很有趣就粘过来了,也许以后用得着!
删除了论坛中一些回复,或许应该改个名字叫:服务器之间的重定向!
最近在做一个单点登录的接口,基本实现如下:
1. webApp-A
if (session.getAttribute("UserID") != null) {
response.sendRedirect(ssoURL);
}
2. webApp-B (在另外一台服务器上)
显示登录界面,登录,然后返回我webApp-A的一URL
3. webApp-A 根据 返回URL中的result参数判断登录的结果,并设置session变量UserID
问题就出在了在重定向到ssoURL,并从webAPP-B返回后,weblogic的sessionid变了,所有的session 变量都没有了,刷新一次sessionid就变一次,同样的程序用tomcat一点问题都没有,不知道问题出在哪,该怎么解决
-------------------------------------------------------------------
webApp-A和webApp-B 分别跑在不同的服务器上
webApp-A 中会重定向到webApp-B的URL
webApp-B 中也会重定到webApp-A的URL
-----------------------------------------------------------------
测试代码如下:
a.jsp
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
a
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
<%
out.println("SessionID:"+session.getId());
response.sendRedirect("http://localhost:8080/wtui/b.jsp");
%>
</body>
</html>
b.jsp
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
b
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
<%
out.println("SessionID:"+session.getId());
response.sendRedirect("http://localhost:7001/wtui/c.jsp");
%>
</body>
</html>
c.jsp
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
c
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
<% out.println("SessionID:"+session.getId());
%>
<A href="a.jsp"><br>返回</A>
</body>
</html>
把a.jsp,c.jsp 放到本机的7001端口,b.jsp 放到本机的8080端口,
(我的7001端口是weblogic 8.1 sp2,8080端口是tomcat 5.0),然后 http://localhost:7001/wtui/a.jsp
最后可以看到c.jsp显示出来的session id, 刷新一下页面,看看是不是每次session id 都在变?
---------------------------------------------------------------------------------------------------------------
今天下午总算是找到了问题的原因了
只要把a.jsp中的
response.sendRedirect("http://localhost:8080/wtui/b.jsp");
改为
response.sendRedirect("http://127.0.0.1:8080/wtui/b.jsp");
就一切正常了,原来做模拟环境的时候没有找两台机器,只是在同一机器开了两个端口。
不过我还是想知道为什么weblogic为出现这种问题
评论:如果两台服务器是在相同的毓下,还会有这样的问题。
在找东西时偶然看到的觉得很有趣就粘过来了,也许以后用得着!
删除了论坛中一些回复,或许应该改个名字叫:服务器之间的重定向!
最近在做一个单点登录的接口,基本实现如下:
1. webApp-A
if (session.getAttribute("UserID") != null) {
response.sendRedirect(ssoURL);
}
2. webApp-B (在另外一台服务器上)
显示登录界面,登录,然后返回我webApp-A的一URL
3. webApp-A 根据 返回URL中的result参数判断登录的结果,并设置session变量UserID
问题就出在了在重定向到ssoURL,并从webAPP-B返回后,weblogic的sessionid变了,所有的session 变量都没有了,刷新一次sessionid就变一次,同样的程序用tomcat一点问题都没有,不知道问题出在哪,该怎么解决
-------------------------------------------------------------------
webApp-A和webApp-B 分别跑在不同的服务器上
webApp-A 中会重定向到webApp-B的URL
webApp-B 中也会重定到webApp-A的URL
-----------------------------------------------------------------
测试代码如下:
a.jsp
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
a
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
<%
out.println("SessionID:"+session.getId());
response.sendRedirect("http://localhost:8080/wtui/b.jsp");
%>
</body>
</html>
b.jsp
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
b
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
<%
out.println("SessionID:"+session.getId());
response.sendRedirect("http://localhost:7001/wtui/c.jsp");
%>
</body>
</html>
c.jsp
<%@ page contentType="text/html; charset=GBK" %>
<html>
<head>
<title>
c
</title>
</head>
<body bgcolor="#ffffff">
<h1>
JBuilder Generated JSP
</h1>
<% out.println("SessionID:"+session.getId());
%>
<A href="a.jsp"><br>返回</A>
</body>
</html>
把a.jsp,c.jsp 放到本机的7001端口,b.jsp 放到本机的8080端口,
(我的7001端口是weblogic 8.1 sp2,8080端口是tomcat 5.0),然后 http://localhost:7001/wtui/a.jsp
最后可以看到c.jsp显示出来的session id, 刷新一下页面,看看是不是每次session id 都在变?
---------------------------------------------------------------------------------------------------------------
今天下午总算是找到了问题的原因了
只要把a.jsp中的
response.sendRedirect("http://localhost:8080/wtui/b.jsp");
改为
response.sendRedirect("http://127.0.0.1:8080/wtui/b.jsp");
就一切正常了,原来做模拟环境的时候没有找两台机器,只是在同一机器开了两个端口。
不过我还是想知道为什么weblogic为出现这种问题
评论:如果两台服务器是在相同的毓下,还会有这样的问题。
相关文章推荐
- 同一机器上不同应用服务器之间的Session问题
- 记录问题:登录session过期,ajax请求被web security拦截,页面没有数据且没有重定向到login页面
- 同一机器上不同应用服务器之间的Session问题
- weblogic与tomcat服务器之间路径的问题
- 服务器修改端口后,"sa登录失败" 问题解决方案
- weblogic 服务器启动不了的问题
- 多台服务器之间共享session
- weblogic通过代理插件weblogic.servlet.proxy.HttpProxyServlet跨域访问导致session丢失问题的解决
- session失效时,解决登录页面嵌套框架问题
- 多台web服务器之间共享session
- android 关于发起不同网络请求与服务器session不一致问题
- 服务器和客户端之间交互时使用BufferedReader的阻塞问题
- Java 多应用服务器Session共享问题
- SQL SERVER问题解决:已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 命名管道提供程序, error: 0 - 管道的另一端上无任何进程。)
- 已成功与服务器建立连接,但是在登录前的握手期间发生错误"问题解决方案
- 解决MacOS升级到High Serria证书登录远程服务器每次都需要输入密码的问题
- linux下为php添加memcache扩展=>解决服务器集群session共享问题
- 微服务系统下Session登录问题记录
- Web.Config中设置Session问题,导致无法向会话状态服务器发出会话状态请求
- 用户未登录或Session超时时重定向到登录页,不那么简