Облачный гаечный ключ Google java клиент, использующий прокси - PullRequest
0 голосов
/ 02 апреля 2020

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

1 Ответ

1 голос
/ 02 апреля 2020

Системные свойства 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();
    }
...