Java-клиент Google Cloud Spanner с использованием прокси

мы используем какую-то старую версию Java-клиента Google Cloud Spider за прокси. Мы использовали env GRPC_PROXY_EXP для установки прокси-хоста и порта. Теперь мы хотим перейти на последнюю версию, и эта переменная больше не поддерживается клиентской библиотекой. Нет четкой документации о том, что такое новая переменная. Пожалуйста, помогите, какая новая переменная env для прокси-сервера GRPC для Java-клиента Google Cloud


person Naresh Nagarajan    schedule 02.04.2020    source источник


Ответы (1)


Системные свойства Java https.proxyHost и https.proxyPort должны работать с клиентом Spanner. Если прокси-сервер также требует аутентификации, вы можете добавить используемый по умолчанию метод аутентификации.

Не могли бы вы попробовать следующий образец кода (при желании удалить часть аутентификации, если она вам не нужна для вашего прокси)?

    // Set proxy host and port. This will instruct both the HTTP and gRPC clients to go through the proxy.
    System.setProperty("https.proxyHost", "127.0.0.1");
    System.setProperty("https.proxyPort", "3128");

    // The following is OPTIONAL, depending on whether your proxy requires authentication.
    // Allow all AUTH schemes. Needed if you are using basic AUTH.
    System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
    // Set the default authentication to use for the proxy.
    java.net.Authenticator.setDefault(
        new Authenticator() {
          @Override
          protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("myuser1", "test".toCharArray());
          }
        });
    // Setup Spanner in the normal way.
    GoogleCredentials credentials =
        GoogleCredentials.fromStream(
            new FileInputStream("/path/to/key.json"));
    Spanner spanner =
        SpannerOptions.newBuilder()
            .setProjectId("project-id")
            .setCredentials(credentials)
            .build()
            .getService();
    DatabaseClient client =
        spanner.getDatabaseClient(
            DatabaseId.of("project-id", "test-instance", "testdb"));
    try (ResultSet rs = client.singleUse().executeQuery(Statement.of("SELECT 1"))) {
      assertThat(rs.next()).isTrue();
      assertThat(rs.getLong(0)).isEqualTo(1L);
      assertThat(rs.next()).isFalse();
    }
person Knut Olav Løite    schedule 02.04.2020