Является ли jCaptcha поток безопасным? - PullRequest
3 голосов
/ 16 ноября 2010

Я использую JCaptcha в проекте и мне нужно поведение, которое не было напрямую доступно.поэтому я заглянул в исходный код, чтобы посмотреть, смогу ли я расширить его, чтобы получить то, что я хочу, и обнаружил, что используемая реализация хранилища ( MapCaptchaStore ) использует HashMap в качестве хранилища ... без синхронизации.

Я знаю, что JCaptcha не работает в кластерной среде, это не мой случай, но как насчет нескольких клиентов одновременно?Синхронизирована ли реализация магазина извне, или я должен свернуть свою собственную и убедиться, что она правильно синхронизирована?

TIA!

Ответы [ 3 ]

1 голос
/ 16 ноября 2010

Судя по источнику чтения для MapCaptchaStore, этот класс НЕ является потокобезопасным. Я не на 100% готов поддержать этот ответ, потому что синхронизация может происходить на более высоком уровне (например, все обращения к одному экземпляру MapCaptchaStore могут быть синхронизированы с другим объектом).

Вы можете использовать другую реализацию CaptchaStore. Например, EhcacheCaptchaStore

1 голос
/ 21 ноября 2010

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

0 голосов
/ 16 ноября 2010

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

Однако я все равно рекомендовал бы проверить, правильно ли он ведет себя в многопоточной среде.

...