完成安装嬴图Java SDK,设置一个运行的嬴图实例后,可以开始将您的应用连接到嬴图图数据库。
创建驱动程序并根据以下方法中的一种或两种进行配置,以建立与嬴图数据库的连接:
配置项的值优先由UltipaConfiguration
决定,其次是ultipa.properties
。若配置项在两个配置方法中均未提及,则使用默认值。
代码配置连接
package com.ultipa.www.sdk.api;
import com.ultipa.sdk.connect.Connection;
import com.ultipa.sdk.connect.conf.UltipaConfiguration;
import com.ultipa.sdk.connect.driver.UltipaClientDriver;
public class Main {
public static void main(String[] args) {
UltipaConfiguration myConfig = UltipaConfiguration.config()
// URI示例: .hosts("mqj4zouys.us-east-1.cloud.ultipa.com:60010")
.hosts("192.168.1.85:60061,192.168.1.86:60061,192.168.1.87:60061")
.username("<username>")
.password("<password>")
.defaultGraph("default");
UltipaClientDriver driver = null;
try {
driver = new UltipaClientDriver(myConfig);
Connection client = driver.getConnection("amz");
String reply = client.sayHello("Hi");
System.out.println(reply);
} finally {
if (driver != null) {
driver.close();
}
}
}
}
Hi Welcome To Ultipa!
使用UltipaConfiguration
配置的驱动程序创建完成。请参考配置项,使用UltipaConfiguration
为全部可配置项配置连接详情。
getConnection()
方法用于获取与嬴图数据库的连接,您可选择是否指定图集为当前图集(本例选定图集amz
)。若未指定图集,将使用配置项defaultGraph
发现的图集。
文件配置连接
package com.ultipa.www.sdk.api;
import com.ultipa.sdk.connect.Connection;
import com.ultipa.sdk.connect.conf.UltipaConfiguration;
import com.ultipa.sdk.connect.driver.UltipaClientDriver;
public class Main {
public static void main(String[] args) {
UltipaClientDriver driver = null;
try {
driver = new UltipaClientDriver();
Connection client = driver.getConnection();
String reply = client.sayHello("Hi");
System.out.println(reply);
} finally {
if (driver != null) {
driver.close();
}
}
}
}
使用ultipa.properties
文件配置的驱动程序创建完成。ultipa.properties
文件应在Java项目的classpath
下,默认路径为./src/main/resources
。
ultipa.properties
文件示例:
ultipa.hosts=192.168.1.85:60061,192.168.1.86:60061,192.168.1.87:60061
#ultipa.hosts=mqj4zouys.us-east-1.cloud.ultipa.com:60010
ultipa.username=<username>
ultipa.password=<password>
ultipa.passwordEncrypt=NOTHING
ultipa.defaultGraph=amz
# ultipa.crt=F:\\ultipa.crt
# ultipa.overrideAuthority=ultipa
# ultipa.crt=https
# ultipa.crt=
ultipa.keepAlive=180
ultipa.keepAliveWithoutCalls=true
ultipa.pool.maxIdle=50
ultipa.pool.minIdle=20
ultipa.pool.maxTotal=200
ultipa.pool.timeBetweenEvictionRunsMillis=3600000
ultipa.pool.testOnBorrow=true
请参考配置项,使用ultipa.properties
文件为全部可配置项配置连接详情。
配置项
以下各项可通过UltipaConfiguration
和ultipa.properties
配置:
项目 |
类型 |
默认 |
描述 |
---|---|---|---|
hosts |
String | 数据库主机地址或URI(不包含https:// 或http:// )。使用逗号分隔多个实例地址。必需项 |
|
username |
String | 主机验证用户名。必需项 | |
password |
String | 主机验证密码。必需项 | |
passwordEncrypt |
String | MD5 | 驱动程序密码加密方式。支持MD5 ,LDAP 和NOTHING 。内容为空时将使用NOTHING |
timeout |
Integer | 15 | 请求超时阈值,单位为秒 |
connectTimeout |
Integer | 2000 | 连接超时阈值,单位为毫秒。每个主机默认尝试连接三次 |
consistency |
Boolean | false | 是否使用主节点以确保读取一致性 |
crt |
String | 设置本地证书文件路径。若使用SSL连接,必须正确配置overrideAuthority ,或设置为HTTPS协议主机的https 。忽略时将使用非SSL连接 |
|
keepAlive |
Integer | 120 | 在向主机发送保持活跃探针以维持连接响应性前,允许处于非活动状态的最大时长(单位为秒)(可能增加服务负载) |
keepAliveWithoutCalls |
Boolean | false | 连接处于非活动状态时,仍激活保持活跃机制 |
overrideAuthority |
String | 使用ultipa 覆盖hostname 以匹配服务器证书颁发机构 |
|
maxRecvSize |
Integer | 4 | 接收数据的最大大小,单位为兆字节 |
defaultGraph |
String | default | 数据库默认使用图集 |
heartBeat |
Integer | 10000 | 所有实例的心跳间隔,单位为毫秒;设置为0以关闭心跳机制 |
poolConfig |
PoolConfig |
配置连接池 |
连接池
PoolConfig
包含使用Apache Commons池库的配置设置。连接数据库时,需完成这些设置,以便高效处理和重用连接。
package com.ultipa.www.sdk.api;
import com.ultipa.sdk.connect.Connection;
import com.ultipa.sdk.connect.conf.UltipaConfiguration;
import com.ultipa.sdk.connect.driver.UltipaClientDriver;
public class Main {
public static void main(String[] args) {
UltipaConfiguration myConfig = UltipaConfiguration.config()
// URI示例: .hosts("mqj4zouys.us-east-1.cloud.ultipa.com:60010")
.hosts("192.168.1.85:60061,192.168.1.86:60061,192.168.1.87:60061")
.username("<username>")
.password("<password>");
PoolConfig poolConfig = myConfig.getPoolConfig();
poolConfig.setMaxIdle(50);
poolConfig.setMinIdle(2);
poolConfig.setMaxTotal(200);
UltipaClientDriver driver = null;
try {
driver = new UltipaClientDriver(myConfig);
Connection client = driver.getConnection();
String reply = client.sayHello("Hi");
System.out.println(reply);
} finally {
if (driver != null) {
driver.close();
}
}
}
}
PoolConfig
包含以下字段:
项目 |
类型 |
默认 |
描述 |
---|---|---|---|
maxIdle |
Integer | 8 | 最大空闲连接数 |
minIdle |
Integer | 0 | 最小空闲连接数 |
maxTotal |
Integer | 8 | 最大总连接数 |
minEvictableIdleTimeMillis |
Long | 1800000 | 连接可逐出前的最小空闲时间,单位为毫秒 |
timeBetweenEvictionRunsMillis |
Long | -1 | 空闲连接的逐出测试间隔,单位为毫秒。设置为负数以关闭扫描 |
maxWaitMillis |
Long | -1 | 连接最大等待时长,单位为毫秒。设置为负数则开启无限等待 |
testOnBorrow |
Boolean | false | 借用连接时是否进行连接测试 |
testOnReturn |
Boolean | true | 归还连接时是否进行连接测试 |
testWhileIdle |
Boolean | true | 连接空闲时是否进行连接测试 |
lifo |
Boolean | true | 是否使用后进先出(LIFO)顺序 |
blockWhenExhausted |
Boolean | true | 连接耗尽时,是否阻止新请求直到连接可用。如果设置为false,将抛出错误 |
numTestsPerEvictionRun |
Integer | 3 | 每次逐出检查时,最大逐出连接数 |
数据源
通过在DataSource
中进行配置并设置目标图集,您可在创建连接时轻松将全部必要连接信息传递给UltipaClientDriver
。
若
UltipaClientDriver
通过DataSource
实例化,ultipa.properties
文件将被忽略。
package com.ultipa.www.sdk.api;
import com.ultipa.sdk.connect.Connection;
import com.ultipa.sdk.connect.conf.UltipaConfiguration;
import com.ultipa.sdk.connect.driver.UltipaClientDriver;
public class Main {
public static void main(String[] args) {
UltipaConfiguration myConfig = UltipaConfiguration.config()
// URI示例: .hosts("mqj4zouys.us-east-1.cloud.ultipa.com:60010")
.hosts("192.168.1.85:60061,192.168.1.86:60061,192.168.1.87:60061")
.username("<username>")
.password("<password>");
PoolConfig poolConfig = myConfig.getPoolConfig();
poolConfig.setMaxIdle(50);
poolConfig.setMinIdle(2);
poolConfig.setMaxTotal(200);
DataSource dataSource = new DataSource();
dataSource.setUltipaConfiguration(myConfig);
dataSource.setDefaultGraph("amz");
UltipaClientDriver driver = null;
try {
driver = new UltipaClientDriver(dataSource);
Connection client = driver.getConnection();
String reply = client.sayHello("Hi");
System.out.println(reply);
} finally {
if (driver != null) {
driver.close();
}
}
}
}
关闭连接
驱动程序对象可在多线程间重复使用,您可通过调用driver.close()
方法关闭连接。