PAYATHON 2026

如何在 Java Spring Boot 应用中连接 GridDB Cloud?

数据小许

连接 GridDB Cloud 时,将原代码中的 notificationAddress 和 notificationPort 替换为实例提供的 notificationProvider URL。clusterName、数据库名称和用户凭据也要填写云实例的实际值,不要沿用 myCluster 和 admin/admin。官方 Cloud 快速入门说明,Cloud 使用 provider method 发现集群。GridDB Cloud 快速入门

获取连接信息

在 GridDB Cloud 管理控制台确认以下参数:

Java 属性应填写的内容
notificationProvider集群的 Notification Provider URL,保留完整路径和查询参数
clusterName控制台显示的实际 Cluster Name
database当前用户获准访问的数据库名称
user创建的数据库用户的完整用户名
password该数据库用户的密码

管理控制台登录账号与数据库用户用途不同。请创建数据库用户,授予其访问目标数据库所需的权限。数据库名称也不一定是 public。连接信息与数据库用户配置

准备客户端和网络

从 Cloud 控制台的下载入口获取适配实例的 Java 客户端及配套库。如果 Cloud 连接需要 SSL 扩展,确保 gridstore-advanced.jar 等所需依赖包含在应用运行时的 classpath 中。仅添加普通 Java client library 可能不足以建立连接。

如果实例支持原生 Client API 公网访问,需配置允许访问的应用出口 IP,并设置 connectionRoute=PUBLIC。私网连接应先建立相应的网络连通性,再按实例的私网配置填写连接参数。公网能力取决于服务版本和实例配置,单独增加一个属性无法确认网络已经打通。GridDB Cloud 公网连接说明

在 Spring Boot 中配置连接

以下示例适用于支持公网 Client API 的实例。通过环境变量提供实际值,并在 application.yml 中引用:

griddb:
  notification-provider: ${GRIDDB_NOTIFICATION_PROVIDER}
  cluster-name: ${GRIDDB_CLUSTER_NAME}
  database: ${GRIDDB_DATABASE}
  user: ${GRIDDB_USER}
  password: ${GRIDDB_PASSWORD}

原问题使用的是 NoSQL Java API,可以直接创建 GridStore,无需配置 JDBC DataSource。以下服务方法为每次操作创建独立的 GridStore 实例,并在结束后关闭资源:

import java.util.Properties;

import com.toshiba.mwcloud.gs.GSException;
import com.toshiba.mwcloud.gs.GridStore;
import com.toshiba.mwcloud.gs.GridStoreFactory;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;

@Service
public class GridDbService {
    private final Environment env;

    public GridDbService(Environment env) {
        this.env = env;
    }

    public boolean containerExists(String containerName) throws GSException {
        Properties props = new Properties();
        props.setProperty("notificationProvider",
                env.getRequiredProperty("griddb.notification-provider"));
        props.setProperty("clusterName",
                env.getRequiredProperty("griddb.cluster-name"));
        props.setProperty("database",
                env.getRequiredProperty("griddb.database"));
        props.setProperty("user",
                env.getRequiredProperty("griddb.user"));
        props.setProperty("password",
                env.getRequiredProperty("griddb.password"));
        props.setProperty("connectionRoute", "PUBLIC");

        try (GridStore store =
                GridStoreFactory.getInstance().getGridStore(props)) {
            return store.getContainerInfo(containerName) != null;
        }
    }
}

示例将完整的 Provider URL 作为 Properties 的字符串值直接传入,与官方 Cloud Java 示例的用法一致。不要将 Web API URL 当作 Notification Provider URL,也不要保留旧的组播发现参数。使用私网接入时,按实例要求调整示例中的 connectionRoute。

验证连接并排查失败原因

调用 containerExists 时,传入目标数据库中已知存在的容器名称。返回 true 表示本次容器信息读取成功,返回 false 表示未找到该容器。出现网络、认证或权限异常时,根据抛出的 GSException 排查。

仅调用 getGridStore(props) 不能确认数据库认证成功;认证会在实际访问节点时发生。单个 GridStore 不保证线程安全,不能让多个请求线程随意并发使用同一实例。GridDB Java API Reference

如果仍然连接失败,按以下顺序检查:

  1. Provider URL 是否完整,是否误用了控制台地址或 Web API 地址。
  2. 集群名、数据库名和完整数据库用户名是否准确,用户是否具有访问权限。
  3. 公网模式下,出口 IP 是否获准访问,connectionRoute 是否设为 PUBLIC;私网模式下,应用是否能访问实例网络。
  4. Cloud 配套依赖是否已打包进运行环境,SSL 配置是否符合所用客户端和实例的要求。

原问题没有提供 Cloud 版本、网络模式或实际异常,无法给出可直接使用的端点和凭据。这些值需要从对应实例获取。

备注:内容仅供参考。