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