Security 在OSGi上使用ThreadLocal安全吗?

Security 在OSGi上使用ThreadLocal安全吗?,security,osgi,Security,Osgi,我正在开发一个基于OSGi的系统,它使用HTTP服务规范提供一个web应用程序 我正在研究安全保存经过身份验证的用户数据的替代方案。 JavaEE中的常见做法是使用保存在ThreadLocal映射中的ThreadContext对象 在OSGi容器中使用这种方法安全吗?OSGi对于线程的处理方式完全没有实际意义,因此通常情况下,ThreadLocal可以正常工作。但是,请注意,这也意味着应用程序可以看到多个线程 您可能想看看OSGi Coordinator规范,该规范为在调用链上共享数据提供了一种

我正在开发一个基于OSGi的系统,它使用HTTP服务规范提供一个web应用程序

我正在研究安全保存经过身份验证的用户数据的替代方案。 JavaEE中的常见做法是使用保存在ThreadLocal映射中的ThreadContext对象


在OSGi容器中使用这种方法安全吗?

OSGi对于线程的处理方式完全没有实际意义,因此通常情况下,ThreadLocal可以正常工作。但是,请注意,这也意味着应用程序可以看到多个线程


您可能想看看OSGi Coordinator规范,该规范为在调用链上共享数据提供了一种标准化的方法。

Peter关于OSGi中ThreadLocal的回答是正确的,但是有更简单的解决方案来处理用户身份验证


看看,这提供了一个OSGi服务,负责存储可以在cookie中设置的用户令牌。默认实现使用MongoDB作为实际的令牌存储,但是其他实现可以很容易地插入。也不要忘记,通过将此类数据存储在内存中,实现水平缩放变得更加困难。

这可能有点晚了,但我还是要问一下。两个bundle是否有办法通信/使用同一个ThreadLocal变量?因为据我所知,每个捆绑包的两个不同类加载器将有两个单独的ThreadLocal实例。不,ThreadLocal是JVM库中的一个类,因此在所有捆绑包之间共享。