我注意到在看javadoc
configure:
将提供的配置参数应用于此提供程序实例,然后返回配置的提供程序。请注意,如果无法就地配置此提供 程序,则将创建并返回一个新的提供程序
。因此,呼叫者应始终使用返回的提供程序。
这向我表明这里正在使用原型模式,并且用于创建多个提供程序的新控制流将类似于:
Provider prototype = Security.getProvider("SunPKCS11");Provider provider1 = prototype.configure(...);Provider provider2 = prototype.configure(...);...至于直接使用参数而不是文件名,我做了一些深入的源代码研究,并在
sun.security.pkcs11.Config:
Config(String fn) throws IOException { this.filename = fn; if (filename.startsWith("--")) { // inline config String config = filename.substring(2).replace("\n", "n"); reader = new StringReader(config);请注意,带有的行
filename.startsWith("--"),此文件名直接来自的参数configure。因此,只要您使用以开头的字符串,然后使用来分隔成对,就
应该 能够将配置参数作为字符串传递。(不过,我目前无法对此进行测试)。
--``key=value``n
但是,我在任何地方都找不到公开记录的事实,因此它可能会发生变化,并且对不同的提供者也有不同的作用,即 使用风险自负! 。



