Можем ли мы использовать один и тот же объект подписавшего для подписания всех запросов? - PullRequest
0 голосов
/ 28 мая 2019

Мне нужно сделать многократные вызовы API api для получения сведений об экземпляре, объеме и vnic.Могу ли я повторно использовать тот же объект подписавшего, созданный для подписи других вызовов?

Метод объекта подписавшего

   public RequestSigner getSigner(Properties properties, String pemFilePath, String apiKey) {
    InputStream privateKeyStream;
    PrivateKey privateKey = null;
    try {
        privateKeyStream = Files.newInputStream(Paths.get(pemFilePath));
        privateKey = PEM.readPrivateKey(privateKeyStream);
    } catch (InvalidKeySpecException e) {
        // throw new RuntimeException("Invalid format for private key");
        properties.setProperty(OracleCloudConstants.CUSTOM_DC_ERROR,
                FormatUtil.getString("am.webclient.oraclecloud.customdc.invalidformat"));
        AMLog.debug("OracleCloudDataCollector::CheckAuthentication()::Invalid format for private key::"
                + e.getMessage());
        e.printStackTrace();
    } catch (IOException e) {
        properties.setProperty(OracleCloudConstants.CUSTOM_DC_ERROR,
                FormatUtil.getString("am.webclient.oraclecloud.customdc.failedload"));
        AMLog.debug(
                "OracleCloudDataCollector::CheckAuthentication()::Failed to load private key::" + e.getMessage());  //No I18N
        e.printStackTrace();
        // throw new RuntimeException("Failed to load private key");
    }
    RequestSigner signer = null;
    if (privateKey != null) {
        signer = new RequestSigner(apiKey, privateKey);
    }
    return signer;
}

1 Ответ

1 голос
/ 31 мая 2019

Один подписывающий объект может использоваться для подписания нескольких запросов.Фактически реализация SDK делает это тоже.

Не ясно, какую версию SDK вы используете.В версии 1.5.7 (самой последней на момент написания статьи) com.oracle.bmc.http.signing.RequestSigner (https://github.com/oracle/oci-java-sdk/blob/master/bmc-common/src/main/java/com/oracle/bmc/http/signing/RequestSigner.java#L16) - это интерфейс, который не может быть обновлен согласно приведенному выше фрагменту.

...