想知道维护同一个用户会话的多个服务器是如何处理请求的。
例如:我们登录到IRCTC并尝试预订一张票。在付款过程中,IRCTC列出了多个银行选项,其中有单选按钮进行在线交易。假设我决定使用花旗银行进行交易,当我点击花旗银行单选按钮时,我被重定向到花旗银行网站交易页面,即你会看到URL从IRCTC网站切换到花旗银行网址。这意味着我完全脱离了IRCTC,转到了花旗银行的网站。现在,当我的支付交易完成后,我将从花旗银行网站切换回IRCTC网站,而不会终止用户会话。也就是说,当我完成交易后从花旗银行URL切换回IRCTC时,用户会话将保持在登录状态。
我想知道这是怎么回事。
我正在使用Struts框架工作。在这方面,请帮助我,并举例说明。
假设IRCTC使用struts (Jsp/Servlets),struts组件负责将IRCTC的详细信息发送给花旗银行,并从花旗银行收到退货到IRCTC。是否可以使用Requestdispacter.sendRedirect()或其他一些东西?
谢谢,
发布于 2013-04-26 06:20:17
有一种叫会话复制的东西。在集群中,所有集群节点都使用相同的会话信息。如果您有兴趣,请阅读链接的站点或其他有关会话复制工作方式的资源。
但是系统不需要共享整个会话对象。在您的情况下,您似乎要离开一台服务器,然后在没有任何特殊会话处理的情况下返回。会议从来没有结束过。就好像你会登录到你最喜欢的网站,然后移动到一个完全不同的页面,回到你的网站上。会议还在那里。你还在登录。
因此,IRCTC站点可能会将一些信息传递给花旗银行网站,花旗需要该网站来处理请求以及一个令牌(在最简单的情况下只是一个数字)。当花旗银行完成时,它会用结果代码和令牌调用一个IRCTC服务器。使用令牌,IRCTC服务器可以将结果代码与您的会话相关联。然后,花旗银行将你的浏览器重定向到一个IRCTC页面。那里的服务器有一个更新的会话,可以在您的订单过程中向您呈现下一个页面。
发布于 2013-04-26 06:43:41
这里没有和花旗银行之间共享的。IRCTC通过在花旗银行网址上提交表格向花旗银行提出请求,并以该形式将支付金额和其他东西作为隐藏参数发送(当然,通过安全机制,比如发送值的一些哈希代码)。
付款成功后,花旗银行将提交一份提交给IRCTC URL的表格(由IRCTC提供的返回网址)。使用隐藏参数中的细节(如成功/错误)。IRCTC对此进行处理,并显示成功/错误屏幕。
此外,在这种情况下,父应用程序中的会话永远不会被终止。本届会议可通过下列方式之一结束:
1. Session time out
2. Logout
3. Application destroys the session在这种情况下,所有这些都没有发生,用户会话仍然存在于浏览器和应用程序中。
如果应用程序有多个服务器,则使用服务器提供的会话复制机制在它们之间共享会话。
此外,web服务器请求相同的服务器(对于会话id),并且只在无法访问原始服务器时调用另一个应用服务器,在这种情况下,会话复制将拯救用户。
发布于 2013-04-26 06:23:57
怎么能说这两个服务器中的用户会话是相同的呢?
我将假设您是在讨论支付网关选项及其功能。
通常情况下,您发送一个web服务调用并将用户重定向到支付网关的URL,该URL将处理交易细节。
然后,原始银行接收支付网关、web服务响应和交易细节。
不过,这种流量在不同的网关上略有变化。然而,最重要的是他们不会在他们的服务器上为你的用户维护一个会话,如果他们正在维护一个会话,那么它将是为IRCTC网站。
https://stackoverflow.com/questions/16229825
复制相似问题