例如:
Security.setProperty("ocsp.enable", "true");
这仅在使用 a 时CertPathValidator
使用。我看到两个重要的选项:
- 再次单例,但每个属性都有 getter 和 setter
- 包含与当前上下文相关的属性的对象:(
CertPathValidator.setValidatorProperties(..)
它已经有一个 setter forPKIXParameters
,这是一个好的开始,但它不包括所有内容)
一些原因可能是:
- 从命令行设置属性 - 从命令行到上面建议的类中的默认值的简单转换器将是微不足道的
- 允许不同的提供者提供额外的自定义属性——它们可以有
public Map getProviderProperties()
,甚至可以public Object ..
使用强制转换。
我很好奇,因为这些属性并不总是在最显眼的地方,而且在使用 API 时不必看到它们,您必须先查看数十个谷歌结果(如果幸运的话)才能获得它们。因为——首先——你并不总是知道你在寻找什么。
我刚刚观察到的另一个致命缺点是这不是线程安全的。例如,如果两个线程想通过 ocsp 检查撤销,它们必须设置ocsp.responderURL
属性.. 并且可能会覆盖彼此的设置。