Spanner 的 Java 客户端库与 Spanner Omni 的运作方式与 Spanner 相同。本文档介绍了如何通过配置 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时,请使用
指定 Spanner Omni 端点。setExperimentalHost()
使用纯文本通信
如需建立纯文本连接,请指定 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);