当代码的另一部分调用 SSLContext.getInstance() 时,我们收到 SSL 握手异常。有人可以确认或否认使用同一提供程序在同一 JVM 中运行多个并发 SSLContext 的能力吗?方法名 getInstance 暗示了一个单例。
是的,您可以拥有多个SSLContext实例,如果您愿意,可以进行不同的配置。
getInstance(...)通常是工厂模式的一部分,而不是单例模式,尽管单例模式的许多实现也使用工厂模式来访问这个单例。
此外,SSLContext.getInstance()不存在,只有getInstance(String), getInstance(String,String)or getInstance(String,Provider)(并且在getInstance方法上有参数对于单身人士来说几乎没有意义)。
(不要将此与 混淆SSLContext.getDefault(),它将始终返回当前的默认实例,尽管这也可以使用 进行全局更改setDefault(SSLContext)。)
以防万一你说SSLContext.getDefault()的是,值得注意的是,默认值SSLContext只会javax.net.ssl.*在第一次加载时读取和使用系统属性一次。如果您在代码中的某处设置这些属性,而不是在其他地方(或以不同方式)并SSLContext.getDefault()以不同的顺序调用,这可能会产生后果:第一次调用SSLContext.getDefault()wins(假设您没有进一步调用 使这复杂化SSLContext.setDefault(...))。
| 归档时间: | 
 | 
| 查看次数: | 1633 次 | 
| 最近记录: |