Oracle NoSQL Databaseの接続プーリングは、RDFグラフ機能のOraclePoolNoSqlクラスを介して提供されます。このクラスを初期化すると、利用可能な接続のプールからOracleNoSqlConnectionオブジェクトを返すことができます。このオブジェクトは基本的に、Oracle NoSQL Database接続のラッパーです。OracleNoSqlConnectionオブジェクトでdisposeが呼び出されると、クローズされるかわりに接続が実際にプールに返されます。OraclePoolNoSqlの使用方法の詳細は、APIリファレンス情報(Javadoc)を参照してください。
次の例では、3つの初期接続を使用してOraclePoolNoSqlオブジェクトを設定しています。
public static void main(String[] args) throws Exception
{
String szStoreName = args[0];
String szHostName = args[1];
String szHostPort = args[2];
String szModelName = args[3];
// Property of the pool: wait if no connection is available at request.
boolean bWaitIfBusy = true;
System.out.println("Creating OracleNoSQL pool");
OracleNoSqlPool pool =
OracleNoSqlPool.createInstance(szStoreName,
szHostName,
szHostPort,
3, // pool size
bWaitIfBusy,
true); // lazyInit
System.out.println("Done creating OracleNoSql pool");
// grab an Oracle NoSQL connection and do something
System.out.println("Get a connection from the pool");
OracleNoSqlConnection conn = pool.getResource();
OracleModelNoSql model =
OracleModelNoSql.createOracleModelNoSql(szModelName, conn);
System.out.println("Clear model");
model.removeAll();
model.getGraph().add(Triple.create(Node.createURI("u:John"),
Node.createURI("u:cousinOf"),
Node.createURI("u:Jackie")));
model.close();
//return connection back to the pool
conn.dispose();
// grab another Oracle NoSQL connection and do something
System.out.println("Get a connection from the pool");
conn = pool.getResource();
String queryString = "select ?x ?y ?z WHERE {?x ?y ?z}";
System.out.println("Execute query " + queryString);
Query query = QueryFactory.create(queryString) ;
QueryExecution qexec = QueryExecutionFactory.create(query, model);
try {
ResultSet results = qexec.execSelect();
ResultSetFormatter.out(System.out, results, query);
}
finally {
qexec.close();
}
model.close();
//return connection back to the pool
conn.dispose();
// Close pool.
// This will close all resources even if they have not been freed up
System.out.println("Close pool, this will close all resources");
pool.close();
}