Spanner 用の Java クライアント ライブラリは、Spanner と同様に Spanner Omni と連携します。このドキュメントでは、Java クライアント ライブラリを構成して Spanner Omni への安全な接続を確立する方法について説明します。これらの接続は、データベース管理クライアントまたはデータベース クライアントを作成するときにクライアント オプションを設定することで確立します。
Java クライアント ライブラリは、プレーンテキスト、TLS、mTLS 接続をサポートしています。
詳細については、Spanner ドキュメントの Java で Spanner を使ってみる をご覧ください。
始める前に
Java で Spanner Omni を使用するには、Java クライアント ライブラリ バージョン 6.115.0 以降を使用します。
部品構成表(BOM)なしで Maven を使用する場合は、次のものを pom.xml ファイルの依存関係に追加します。
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-spanner</artifactId>
<version>6.115.0</version>
</dependency>
SpannerOptions オブジェクトを構成する
SpannerOptions
オブジェクトを構成して
DatabaseClientまたは
DatabaseAdminClientを作成するときに、setExperimentalHost()を使用して Spanner Omni エンドポイントを指定します。
プレーンテキスト通信を使用する
プレーンテキスト接続を確立するには、Spanner Omni エンドポイントを指定し、usePlainText() メソッドを使用します。
SpannerOptions options =
SpannerOptions.newBuilder()
.setExperimentalHost("http://ENDPOINT") // Replace with your Spanner Omni endpoint
.usePlainText()
.build();
Spanner spanner = options.getService();
TLS 設定を使用する
TLS 接続用に SpannerOptions オブジェクトを構成する場合、追加の認証情報プロパティを設定する必要はありません。CA 証明書を Java トラストストアに追加する必要があります。
CA 証明書を Java トラストストアに追加するには、次のコマンドを使用します。
sudo keytool -import -trustcacerts -file /.spanner/certs/ca.crt -alias spanner-ca -keystore $JAVA_HOME/lib/security/cacerts
または、アプリケーションの実行時にカスタム CA 証明書ストアを直接渡すこともできます。
java -Djavax.net.ssl.trustStore=PATH_TO_CUSTOM_CACERTS -Djavax.net.ssl.trustStorePassword=changeit app
互換性を維持するには、コピーを作成して Java トラストストアの上にカスタム トラストストアを構築します。
cp $JAVA_HOME/lib/security/cacerts /PATH_TO_CUSTOM_CACERTS
mTLS 設定を使用する
mTLS 接続を使用するには、次のコマンドを使用して、Spanner Omni によって生成されたキーを Java に準拠した形式に変換します。
openssl pkcs8 -topk8 -in ~/.spanner/certs/client.key -out ~/.spanner/certs/java-client.key -nocrypt
次の例は、クライアント証明書を使用するように SpannerOptions オブジェクトを構成する方法を示しています。
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();
データベースを作成する
次に、データベースを作成します。ライブラリ コードで必要な場合は、プロジェクトを default として指定します。たとえば、DatabaseId を作成するときに default を指定します。
DatabaseId dbId = DatabaseId.of("default", "default", DATABASE_ID);
DatabaseClient client = spanner.getDatabaseClient(dbId);