Bu soru eski ama, işte soru için vurmak ilk google var gider: aramanızın
sonuç (Oracle Java) özellikle bir sun.security.provider.X509Factory
bir CertificateFactory
uygulamasıdır. Bu fabrikada yalnızca [onları kontrol ettim] iş parçacığı olan statik örnek üyeleri var. Ayrıca sınıfın iş parçacığı güvenliği göz önünde bulundurulduğunu gösteren synchronized static
yöntemlerinin bir numarası vardır.
Bu yüzden pratikte, eğer Oracle Java (tm) kullandığınızdan emin olduğunuz takdirde iplik güvenliğini üstlenebileceğinizi söyleyebilirim; Ancak, bunları kullanıyorsanız diğer JRE'leri kontrol etmeniz gerekir. Sonra
private static final ThreadLocal<CertificateFactory> certFactory =
ThreadLocal.withInitial(() -> {
try {
return CertificateFactory.getInstance("x.509");
} catch (Exception e) {
throw new RuntimeException(e);
}
});
ve üstü
public Certificate loadCertFrom(String filename) throws IOException, CertificateException {
try (final FileInputStream in = new FileInputStream(filename)) {
return certFactory.get().generateCertificate(in);
}
}
: Her zamanda örneğin güvenli olması ve
ThreadLocal
değeri sarabilirdiniz