jCaptcha线程安全吗?

时间:2010-11-16 07:50:19

标签: java synchronization storage captcha

我在项目中使用JCaptcha,需要一种无法直接使用的行为。所以我查看了源代码,看看我是否可以扩展它以获得我想要的东西,并发现我使用的商店实现(MapCaptchaStore)使用HashMap作为存储...没有同步。

我知道JCaptcha在群集环境中不起作用,不是我的情况,但同时多个客户端怎么样?商店实现是在外部同步还是应该自己滚动并确保它已正确同步?

TIA!

3 个答案:

答案 0 :(得分:1)

根据MapCaptchaStore的读取源判断,此类不是线程安全的。我并不是100%愿意支持这个答案,因为同步可能发生在更高的层次上(例如,对单个MapCaptchaStore实例的所有访问都可能在另一个对象上同步)。

您可以使用CaptchaStore的另一个实现。例如,EhcacheCaptchaStore

答案 1 :(得分:1)

验证码存储的基本hashmap实现未同步,这可能会导致一些奇怪的行为。 其他商店是线程安全的,对于使用FastHashMapCaptchaStore的简单实现。

答案 2 :(得分:0)

我认为这是因为它被设计为与将始终拥有多个客户端的Web应用程序集成。它也是一个CAPTCHA框架,因此它们必须经过人机和计算机客户端的测试。

但是,我仍然建议测试它是否在多线程环境中正常运行。