Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何避免同时访问我的网站中的支付链接_Java_Mysql_Database_Concurrency_Struts2 - Fatal编程技术网

Java 如何避免同时访问我的网站中的支付链接

Java 如何避免同时访问我的网站中的支付链接,java,mysql,database,concurrency,struts2,Java,Mysql,Database,Concurrency,Struts2,我正在使用mysql InnoDB和struts2开发我的网站。当用户想要使用某个产品时,他会向收件箱发送一张发票,并通过该链接付款 我必须解决的问题是:当一个用户在两个会话中打开链接并尝试为这两个会话付费时,我只能允许一个交易。若允许的事务遇到诸如浏览器关闭或其他问题之类的问题,事情将进入死锁状态。我必须避免这种情况,并允许下一次交易 请告诉我如何实现这一点?我认为您必须为每个会话添加一个生存时间,以防止死锁(就像银行网站使用的死锁一样),您可以使用唯一的会话ID来实现这一点。所有会话都有固定

我正在使用mysql InnoDB和struts2开发我的网站。当用户想要使用某个产品时,他会向收件箱发送一张发票,并通过该链接付款

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


请告诉我如何实现这一点?

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

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


希望能有所帮助,

我认为您必须为每个会话添加一个生存时间,以防止死锁(就像银行网站正在使用的会话一样)…@Amit-->对不起,我无法理解您要说的内容,请您简单一点。在银行网站中,他们是如何维护并发的。有人能解释一下吗?使用唯一的会话ID,所有会话都有固定的生存时间。一旦时间结束,会话将过期。在这种情况下,如果一个会话处于活动状态,则可以拒绝对该会话的所有尝试。如果浏览器在会话之间关闭,会话将在其生存期后自动过期。现在,如果由于任何原因(如会话过期或浏览器关闭)而未完成付款,用户只需重新单击链接并重新启动该过程……明白了。谢谢你,阿米特。我想保留一个时间戳,检查具体的时间量,如果超过允许访问,否则拒绝访问,直到超过该时间。-->这是银行也使用的方法吗?那么Mysql中的事务和锁定呢。有人能澄清我的疑问吗?我从来没有在任何银行的网站上工作过。然而,作为程序员,当网页上写着“您的会话已过期,请重新登录”时,您可以想象幕后会发生什么。。。作为一名程序员,你应该试着想象一下当你点击网站或应用程序上的按钮时会发生什么。