2013-07-18 2 views
1

Я использую mysql InnoDB и struts2 для разработки моего сайта. Когда пользователь хочет использовать продукт, он отправит счет-фактуру на свой почтовый ящик, и с этой ссылкой он может заплатить деньги.Как избежать параллельного доступа к платежной ссылке на моем сайте

Проблема, которую я должен решить, заключается в следующем: когда пользователь открывает ссылку в двух сеансах и пытается заплатить за оба, я должен разрешить только одну транзакцию. И если разрешенная транзакция вызывает проблему, такую ​​как закрытие браузера или какая-то другая проблема, все перейдет в состояние взаимоблокировки. Я должен избегать этого и разрешать следующие транзакции.

Просьба предложить мне, как этого достичь?

+0

Я думаю, вам придется добавить время жизни для каждой сессии для предотвращения тупиков (так же, как в одном, используемых сайтах банки) ... – aProgrammer

+0

@Amit -> К сожалению, Я не могу получить то, что вы собираетесь сказать, пожалуйста, можете ли вы сказать это легко. – javaaddict

+0

На сайтах банков, как они поддерживают параллелизм. Может кто-нибудь объяснить это, пожалуйста. – javaaddict

ответ

0

Думаю, вам придется добавить время жизни для каждой сессии, чтобы предотвратить взаимоблокировки (как в том, что используется сайтами банка), и вы можете сделать это с помощью уникальных сессий. Все сеансы имеют фиксированный срок службы. По прошествии времени сеанс истек.

В этом случае, если один сеанс активен, вы можете отказаться от всех попыток этой сессии. Если браузер закрывается между сеансом, сеанс автоматически истекает после его срока службы. Теперь, если платеж не был выполнен по какой-либо причине, то есть истечения срока действия сеанса или закрытия браузера, Пользователь может просто повторно щелкнуть ссылку и перезапустить процесс.

Надеется, что это помогает,

+0

-> Является ли этот метод банками слишком использующим? и как насчет транзакций и блокировки в Mysql. Может ли кто-нибудь очистить мои сомнения? Пожалуйста. – javaaddict

+0

Никогда не работал на сайте какого-либо банка. Однако, как программист, вы можете себе представить, что должно происходить за кулисами, когда на веб-странице написано: «Срок вашей сессии истек, пожалуйста, войдите в систему снова» ... Приятно быть программистом, вы должны попытаться представить, что должно быть на самом деле, когда вы нажимаете на кнопку на веб-сайте или в приложении. – aProgrammer

Смежные вопросы