如何避免在我的网站上同时访问付款链接

时间:2013-07-18 07:54:13

标签: java mysql database concurrency struts2

我正在使用mysql InnoDB和struts2来开发我的网站。当用户想要使用产品时,他会将发票发送到他的收件箱,并且通过该链接他可以支付这笔钱。

我必须解决的问题是:当用户在两个会话中打开链接并尝试为两者付费时,我必须只允许一个事务。如果允许事务遇到浏览器关闭或其他问题,那么事情就会陷入死锁状态。我必须避免这种情况并允许下一次交易。

请建议我如何实现这个目标?

1 个答案:

答案 0 :(得分:0)

我认为您必须为每个会话添加一个生命周期以防止死锁(就像银行网站使用的那个一样)并且您可以使用唯一的会话来执行此操作。所有会议都有固定的续航时间。一旦时间结束,会话就会过期。

在这种情况下,如果一个会话处于活动状态,您可以拒绝该会话的所有尝试。如果浏览器在会话之间关闭,会话将在其生命周期后自动过期。现在,如果由于任何原因(即会话到期或浏览器关闭)未完成付款,用户只需重新单击该链接并重新启动该过程即可。

希望它有所帮助,