Usar a biblioteca de cliente Java para se conectar ao Spanner Omni

A biblioteca de cliente Java para Spanner funciona com o Spanner Omni da mesma forma que funciona com o Spanner. Neste documento, mostramos como estabelecer conexões seguras com o Spanner Omni configurando a biblioteca de cliente Java. Para estabelecer essas conexões, defina as opções do cliente ao criar um cliente administrativo ou um cliente de banco de dados.

A biblioteca de cliente Java é compatível com conexões de texto simples, TLS e mTLS.

Para mais informações, consulte Começar a usar o Spanner em Java na documentação do Spanner.

Antes de começar

Para começar a usar o Spanner Omni em Java, use a biblioteca de cliente Java versão 6.115.0 ou mais recente.

Se você usa o Maven sem a lista de materiais (BOM), adicione o seguinte às dependências do arquivo pom.xml:

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-spanner</artifactId>
  <version>6.115.0</version>
</dependency>

Configurar o objeto SpannerOptions

Ao configurar o objeto SpannerOptions para criar um DatabaseClient ou DatabaseAdminClient, especifique o endpoint do Spanner Omni usando setExperimentalHost().

Usar comunicação em texto simples

Para estabelecer uma conexão de texto simples, especifique o endpoint do Spanner Omni e use o método usePlainText():

SpannerOptions options =
    SpannerOptions.newBuilder()
        .setExperimentalHost("http://ENDPOINT") // Replace with your Spanner Omni endpoint
        .usePlainText()
        .build();
Spanner spanner = options.getService();

Usar uma configuração de TLS

Ao configurar o objeto SpannerOptions para uma conexão TLS, não é necessário definir outras propriedades de credenciais. Adicione o certificado da CA ao keystore de confiança do Java.

Para adicionar o certificado de CA ao truststore do Java, use o seguinte comando:

sudo keytool -import -trustcacerts -file /.spanner/certs/ca.crt -alias spanner-ca -keystore $JAVA_HOME/lib/security/cacerts

Como alternativa, você pode transmitir um armazenamento de certificado de CA personalizado diretamente ao executar o aplicativo:

java -Djavax.net.ssl.trustStore=PATH_TO_CUSTOM_CACERTS -Djavax.net.ssl.trustStorePassword=changeit app

Para manter a compatibilidade, crie seu keystore de confiança personalizado com base no keystore de confiança do Java fazendo uma cópia:

cp $JAVA_HOME/lib/security/cacerts /PATH_TO_CUSTOM_CACERTS

Usar uma configuração de mTLS

Para usar uma conexão mTLS, converta a chave gerada pelo Spanner Omni em um formato compatível com Java usando o seguinte comando:

openssl pkcs8 -topk8 -in ~/.spanner/certs/client.key -out ~/.spanner/certs/java-client.key -nocrypt

O exemplo a seguir mostra como configurar o objeto SpannerOptions para usar um certificado do cliente:

   SpannerOptions options =
        SpannerOptions.newBuilder()
           .setExperimentalHost("https://ENDPOINT") // Replace with your Spanner Omni endpoint
.useClientCert("PATH_TO_CLIENT_CERT","PATH_TO_CLIENT_CERT_KEY")
.build();
   Spanner spanner = options.getService();

Crie o banco de dados

Em seguida, crie o banco de dados. Especifique o projeto como default quando necessário no código da biblioteca. Por exemplo, especifique default ao criar um DatabaseId:

DatabaseId dbId = DatabaseId.of("default", "default", DATABASE_ID);
DatabaseClient client = spanner.getDatabaseClient(dbId);