【问题标题】:Is jCaptcha thread safe?jCaptcha 线程安全吗?
【发布时间】:2010-11-22 02:51:07
【问题描述】:

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

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

TIA!

【问题讨论】:

    标签: java synchronization storage captcha


    【解决方案1】:

    从 MapCaptchaStore 的阅读源来看,这个类不是线程安全的。不过,我并不是 100% 愿意支持这个答案,因为同步可能发生在更高级别(例如,对 MapCaptchaStore 的单个实例的所有访问都可能在另一个对象上同步)。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • “测试它在多线程环境中的行为是否正确”是测试中尚未解决的一大挑战!
        猜你喜欢
        • 2020-04-15
        • 2011-07-04
        • 2014-04-26
        • 2012-11-30
        • 2010-12-30
        • 2013-03-12
        • 2021-08-03
        • 2010-12-27
        • 2018-06-04
        相关资源
        最近更新 更多