eXtremeDB Cluster Applications in Java

To implement a cluster with Java, first an array of Cluster nodes is initialized and passed to the ClusterDatabase.open() method, then a ClusterConnection is instantiated for this database and a Listener thread is created. Finally the ClusterConnection’s stop() method is called to terminate the Cluster session. The following code snippet demonstrates how a simple cluster Java application performs these steps:

     
    void clusterListen()
    {
        ClusterConnection con = new ClusterConnection(db);
        con.listen();
        con.disconnect();
    }
     
    {
        Database.Parameters params = new Database.Parameters();
        // fill usual params
        ...
         
        //declare and fill cluster node's parameters
        Database.ClusterNodeParams[] node_params = new Database.ClusterNodeParams[2];
        node_params[0] = new Database.ClusterNodeParams("192.168.0.1:20000");
        node_params[1] = new Database.ClusterNodeParams("192.168.0.2:20000");
         
        // set Cluster parameters
        params.clusterParams = new Database.ClusterParams(node_params, node_id);
        // Create cluster database. Transaction manager MUST be MVCC
        db = new Database(Database.MCO_CFG_MVCC_TRANSACTION_MANAGER |
        Database.MCO_CFG_CLUSTER_SUPPORT);
     
        // Open database
        db.open("cluster-db", params, DATABASE_SIZE);
         
        // start cluster listener thread
        Thread listenThread = new Thread(new Runnable() { public void run() {
                                    clusterListen(); } });
        listenThread.start();
         
        // connect to the database using ClusterConnection
        ClusterConnection con = new ClusterConnection(db);
        /***************************/
        //do some work
        /***************************/
         
        // Stop the connection and listener thread, disconnect and close database
        con.stop();
        listenThread.join(); // wait for listener thread
        con.disconnect();
        db.close();
    }