我們在Flex應用程序中使用Flex 4,BlazeDS和WebLogic 10.3.5重新登錄時遇到問題。在Flex中重新登錄導致Channel.Connect.Failed錯誤NetConnection.Call.Failed:HTTP:Status 500:url
使用情況下造成的問題是這樣的:
- 開始在瀏覽器應用程序。
- 使用j_security_check操作重定向到登錄表單頁面。
- 登錄並使用該應用程序。
- 在瀏覽器中點擊「返回」按鈕。
- 再次登錄表單頁面。
- 重新登錄。
- 在BlazeDS中發現異常並捕獲Flex/ActionScript中的錯誤。
陷入登錄WLS異常:
[BlazeDS]Unexpected error encountered in Message Broker servlet
flex.messaging.LocalizedException: The FlexSession is invalid.
at flex.messaging.FlexSession.checkValid(FlexSession.java:943)
at flex.messaging.FlexSession.getUserPrincipal(FlexSession.java:254)
at flex.messaging.HttpFlexSession.getUserPrincipal(HttpFlexSession.java:286)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:296)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3717)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
陷入的Flex/ActionScript中的故障:
faultCode: Client.Error.MessageSend
faultString: Send failed
faultDetail: Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 500: url: 'http://server:port/web-project/messagebroker/amf'
似乎是BlazeDS的獲得了第二次會議,而首先是仍然有效並且活躍。
有誰知道,這正是導致這個問題,以及如何優雅地解決它們?我有幾個小技巧,但不知道他們是否有足夠的合適的:
- 漁獲的Flex/ActionScript中的故障,重定向到一個退出頁面無效會話,然後重定向到登錄頁面,並創建一個新的會話。
- 通過JavaScript禁用瀏覽器中的「返回」按鈕。
我會很感激任何建議,解釋和建議。謝謝。
謝謝你的提示。我現在不在這個項目上工作,但稍後當我回來時讓我們知道結果。 – Sharg 2013-03-13 15:29:05