1

我正在使用 mysql InnoDB 和 struts2 来开发我的网站。当用户想要使用产品时,他会收到一张发票​​到他的收件箱,通过这个链接他可以付钱。

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

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

4

1 回答 1

0

我认为您必须为每个会话添加一个生命周期以防止死锁(就像银行网站使用的死锁一样),您可以使用唯一的 sessionid 来做到这一点。所有会话都有固定的生命周期。一旦时间结束,会话即过期。

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

希望能帮助到你,

于 2013-07-18T13:39:42.287 回答