2010-01-29 5 views
3

Каковы наилучшие способы избежать условий гонки в JSP в то же время не замедлить process.I пытавшиеся isThreadSafe = ложь синхронизирована (сессия)Как избежать гонки состояние

однако есть ли доступно другое альтернативное решение?

+0

Связанные вопросы: http://stackoverflow.com/questions/1820629/using-request-getsession-as-a-locking-object http://stackoverflow.com/questions/616601/is-httpsession-thread-safe -Есть-Set-Get-атрибут-нить-сейф-операции – McDowell

ответ

6

Решение одноразового использования (например, threadSafe=false) заставляет запросы выполняться по одному за раз. И это неизбежно замедляет обработку запросов.

Чтобы избежать этого сценария, вам нужно понять, почему вы получаете условия гонки и (повторно) проектируете свою архитектуру, чтобы избежать проблемы. Например:

  • если состояние гонки в изменениях некоторых общих в памяти структур данных, необходимо синхронизировать доступ и обновление к структуре данных на соответствующем уровне детализации

  • если условие гонки находится в обновлениях вашей базы данных, вам необходимо реструктурировать SQL для использования транзакций на соответствующем уровне детализации.

Это просто (возможно) схемы для решения ваших проблем с состоянием гонки. На самом деле, вы должны понимать, что корень вызывает вас.

5

Это зависит от того, почему у вас есть условия гонки.

Простейшей мыслью является отсутствие глобальных переменных, на которые вы пишете.

Выполняйте всю свою логику в методах, которые используют только локальные переменные.

У вас нет java-кода на вашей странице jsp, но вызывается компоненту для выполнения операций.

Что вы делаете, что вызывает состояние гонки?

1
isThreadSafe=false 

Это, вероятно, приведет к плохой производительности, поскольку делает доступ к странице последовательным. Это также затронет только одну страницу, поэтому, если вы получите доступ к данным через другую страницу, это ничего не сделает для вас.

synchronized(session) 

Этого не гарантируется работа (хотя это будет на некоторых серверах как побочный эффект реализации).

Любое решение, вероятно, потребует дополнительной информации о данных, которые вы пытаетесь защитить, и конфигурации вашего сервера.

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