【发布时间】:2013-07-18 07:54:13
【问题描述】:
我正在使用 mysql InnoDB 和 struts2 来开发我的网站。当用户想要使用产品时,他会收到一张发票到他的收件箱,通过该链接他可以付款。
我必须解决的问题是:当用户在两个会话中打开链接并尝试同时为这两个会话付款时,我必须只允许一次交易。如果允许的事务出现浏览器关闭或其他问题,事情将进入死锁状态。我必须避免这种情况并允许下一次交易。
请建议我如何实现这一目标?
【问题讨论】:
-
我认为您必须为每个会话添加一个生命周期以防止死锁(就像银行网站使用的死锁一样)...
-
@Amit --> 对不起,我听不懂你要说什么,请你说得简单点。
-
在银行站点中,他们如何维护并发性。谁能解释一下,拜托。
-
使用唯一的 sessionids 所有会话都有固定的生命周期。一旦时间结束,会话即过期。在这种情况下,如果一个会话处于活动状态,您可以拒绝对该会话的所有尝试。如果浏览器在会话之间关闭,会话将在其生命周期后自动过期。现在,如果由于任何原因(例如会话过期或浏览器关闭)未完成付款,用户只需重新单击链接并重新启动流程...
-
你明白了。谢谢@Amit。我想保留一个时间戳并检查特定的时间量,如果超过则允许访问,否则拒绝访问,直到超过该时间。
标签: java mysql database concurrency struts2