在找東西時(shí)偶然看到的覺(jué)得很有趣就粘過(guò)來(lái)了,也許以后用得著!
刪除了論壇中一些回復(fù),或許應(yīng)該改個(gè)名字叫:服務(wù)器之間的重定向!
最近在做一個(gè)單點(diǎn)登錄的接口,基本實(shí)現(xiàn)如下:
1. webApp-A
if (session.getAttribute("UserID") != null) {
response.sendRedirect(ssoURL);
}
2. webApp-B (在另外一臺(tái)服務(wù)器上)
顯示登錄界面,登錄,然后返回我webApp-A的一URL
3. webApp-A 根據(jù) 返回URL中的result參數(shù)判斷登錄的結(jié)果,并設(shè)置session變量UserID
問(wèn)題就出在了在重定向到ssoURL,并從webAPP-B返回后,weblogic的sessionid變了,所有的session 變量都沒(méi)有了,刷新一次sessionid就變一次,同樣的程序用tomcat一點(diǎn)問(wèn)題都沒(méi)有,不知道問(wèn)題出在哪,該怎么解決
-------------------------------------------------------------------
webApp-A和webApp-B 分別跑在不同的服務(wù)器上
webApp-A 中會(huì)重定向到webApp-B的URL
webApp-B 中也會(huì)重定到webApp-A的URL
-----------------------------------------------------------------
測(cè)試代碼如下: 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(bǔ).jsp,c.jsp 放到本機(jī)的7001端口,b.jsp 放到本機(jī)的8080端口, (我的7001端口是weblogic 8.1 sp2,8080端口是tomcat 5.0),然后 http://localhost:7001/wtui/a.jsp 最后可以看到c.jsp顯示出來(lái)的session id, 刷新一下頁(yè)面,看看是不是每次session id 都在變? |
---------------------------------------------------------------------------------------------------------------
今天下午總算是找到了問(wèn)題的原因了
只要把a(bǔ).jsp中的
response.sendRedirect("http://localhost:8080/wtui/b.jsp");
改為
response.sendRedirect("http://127.0.0.1:8080/wtui/b.jsp");
就一切正常了,原來(lái)做模擬環(huán)境的時(shí)候沒(méi)有找兩臺(tái)機(jī)器,只是在同一機(jī)器開(kāi)了兩個(gè)端口。
不過(guò)我還是想知道為什么weblogic為出現(xiàn)這種問(wèn)題
(完)