Search This Blog

Showing posts with label Pivotal GemFireXD. Show all posts
Showing posts with label Pivotal GemFireXD. Show all posts

Friday, 7 November 2014

Starting a Pivotal GemFireXD Distributed System from IntelliJ IDEA

The example below shows how you can start a Pivotal GemFireXD distributed system from IntelliJ IDEA. Here we will start a Locator which has Pulse enabled as well as one member. We use the following class method to achieve this from an IDE such as IntelliJ

FabricServiceManager.getFabricLocatorInstance()
FabricServiceManager.getFabricServerInstance()

1. Add the following to your maven POM file to ensure the correct libraries are present.
  
        <dependency>
            <groupId>com.pivotal.gemfirexd</groupId>
            <artifactId>gemfirexd</artifactId>
            <version>1.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.pivotal.gemfirexd</groupId>
            <artifactId>gemfirexd-client</artifactId>
            <version>1.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-core</artifactId>
            <version>8.0.14</version>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-logging-juli</artifactId>
            <version>8.0.14</version>
        </dependency> 

2. Create a start locator class as follows
  
package pivotal.au.gemfirexd.demos.startup;

import com.pivotal.gemfirexd.FabricLocator;
import com.pivotal.gemfirexd.FabricServiceManager;

import java.sql.SQLException;
import java.util.Properties;

/**
 * Created by papicella on 4/11/2014.
 */
public class StartLocator1
{
    public static void main(String[] args) throws SQLException, InterruptedException {
        // TODO Auto-generated method stub

        Properties serverProps = new Properties();
        serverProps.setProperty("sys-disk-dir","./gfxd/locator1");
        serverProps.setProperty("server-bind-address","localhost");
        serverProps.setProperty("jmx-manager-start","true");
        serverProps.setProperty("jmx-manager-http-port","7075");
        serverProps.setProperty("jmx-manager-bind-address","localhost");

        FabricLocator locator = FabricServiceManager.getFabricLocatorInstance();
        locator.start("localhost", 41111, serverProps);

        locator.startNetworkServer("127.0.0.1", 1527, null);

        System.out.println("Locator started ... ");
        Object lock = new Object();
        synchronized (lock) {
            while (true) {
                lock.wait();
            }
        }

    }
} 

3. Edit the run configuration to ensure you specify the GEMFIREXD ENV variable as shown below.

Note: This is needed to ensure Pulse can start when the locator starts


4. Create a start server class as follows.
  
package pivotal.au.gemfirexd.demos.startup;

import com.pivotal.gemfirexd.FabricServer;
import com.pivotal.gemfirexd.FabricServiceManager;

import java.sql.SQLException;
import java.util.Properties;

public class StartServer1
{
    public static void main(String[] args) throws SQLException, InterruptedException {
        // TODO Auto-generated method stub
        FabricServer server = FabricServiceManager.getFabricServerInstance();

        Properties serverProps = new Properties();
        serverProps.setProperty("server-groups", "mygroup");
        serverProps.setProperty("persist-dd", "false");
        serverProps.setProperty("sys-disk-dir","./gfxd/server1");
        serverProps.setProperty("host-data","true");
        serverProps.setProperty("locators", "localhost[41111]");

        server.start(serverProps);

        server.startNetworkServer("127.0.0.1", 1528, null);

        Object lock = new Object();
        synchronized (lock) {
            while (true) {
                lock.wait();
            }
        }

    }
}

5. Start the locator by running "StartLocator1" class.


6. Start one server by running "StartServer1" class.


7. Connect to pulse to verify you have a 2 node distributed system with one locator and one member.

Using URL: http://localhost:7075/pulse/Login.html




Tuesday, 4 November 2014

Starting a Pivotal GemFireXD server from Java

The FabricServer interface provides an easy way to start an embedded GemFire XD server process in an existing Java application.

In short code as follows will get you started. Use this in DEV/TEST scenarios not for production use.
  
package pivotal.au.gemfirexd.demos.startup;

import com.pivotal.gemfirexd.FabricServer;
import com.pivotal.gemfirexd.FabricServiceManager;

import java.sql.SQLException;
import java.util.Properties;

public class StartServer1
{
    public static void main(String[] args) throws SQLException, InterruptedException {
        // TODO Auto-generated method stub
        FabricServer server = FabricServiceManager.getFabricServerInstance();

        Properties serverProps = new Properties();
        serverProps.setProperty("server-groups", "mygroup");
        serverProps.setProperty("persist-dd", "false");
        serverProps.setProperty("sys-disk-dir","./gfxd/server1");
        serverProps.setProperty("host-data","true");

        server.start(serverProps);

        server.startNetworkServer("127.0.0.1", 1527, null);

        Object lock = new Object();
        synchronized (lock) {
            while (true) {
                lock.wait();
            }
        }

    }
} 

More Information

http://gemfirexd.docs.pivotal.io/latest/userguide/index.html#developers_guide/topics/server-side/fabricserver.html

Thursday, 30 October 2014

Creating a WebLogic 12c Data Source Connection to Pivotal GemFireXD 1.3

I am going to show how you would create a WebLogic data source to Pivotal GemFireXD 1.3. In this example I am using the developer edition of Weblogic which known as "Free Oracle WebLogic Server 12c (12.1.3) Zip Distribution and Installers for Developers" You can download / configure it as follows.

http://www.oracle.com/technetwork/middleware/downloads/index-087510.html

Note: I am assuming you have WebLogic 12C running with GemFireXD also running. I am also assuming a WLS install directory as follows with a domain called "mydomain"

/Users/papicella/vmware/software/weblogic/wls12130

1. Ensure you have the GemFireXD client driver copied into your WLS domain lib directory as follows, prior to starting WLS

/Users/papicella/vmware/software/weblogic/wls12130/user_projects/domains/mydomain/lib/gemfirexd-client.jar

2. Navigate to the WebLogic Console as follows

http://localhost:7001/console/

3. Login using your server credentials


4. From the Domain Structure tree navigate to "Services -> Data Sources"

5. Click on "New -> Generic Data Source"

6. Fill in the form as follows

Name: GemFireXD-DataSource
JNDI Name: jdbc/gemfirexd-ds
Type: Select "Other" from the drop down list box

7. Click "Next"
8. Click "Next"
9. Uncheck "Supports Global Transactions" and click next
10. Enter the following details for credentials. The GemFireXD cluster is not setup for auhentication so this is just a fake username/password to allow us to proceed.

Username: app
Password: app

11. Click "Next"
12. Enter the following CONFIG parameters for your GemFireXD Cluster

Driver Class Name: com.pivotal.gemfirexd.jdbc.ClientDriver
URL: jdbc:gemfirexd://localhost:1527/
Test Table Name: sysibm.sysdummy1

Leave the rest as their default values , it's vital you don't alter the default values here.

13. Click the "Test Configuration" button at this point to verify you can connect, if Successful you will see a message as follows


14. Click "Next"
15. Check the server you wish to target this Data Source for. If you don't do this the Data Source will not be deployed and accessible. In DEV only WLS you only have "myserver" to select.


16. Click "Finish"


It should show your all done and no re-starts are required. To access the Data Source you need to use JNDI with the path "jdbc/gemfirexd-ds"

Monday, 20 October 2014

SQLShell accessing Pivotal GemFire XD 1.3

I stumbled open SQLShell recently as per the URL below. Below I will show how you can connect to Pivotal GemFireXD using SQLShell. I used this to export query results using CSV output.

http://software.clapper.org/sqlshell/users-guide.html

Note: Assuming SQLShell is already installed and instructions below are for Mac OSX

1. Create a file in $HOME/.sqlshell/config as shown below, I just took the sample it ships with. Notice how I have added an alias for "gemfirexd", highlighted below.

# ---------------------------------------------------------------------------
# initialization file for SQLShell

[settings]
#colspacing: 2

[drivers]
# Driver aliases.
postgresql = org.postgresql.Driver
postgres = org.postgresql.Driver
mysql = com.mysql.jdbc.Driver
sqlite = org.sqlite.JDBC
sqlite3 = org.sqlite.JDBC
oracle = oracle.jdbc.driver.OracleDriver
access = sun.jdbc.odbc.JdbcOdbcDriver
gemfirexd = com.pivotal.gemfirexd.jdbc.ClientDriver

[vars]
historyDir: ${env.HOME}/.sqlshell

[db_postgres]
aliases: post
url: jdbc:postgresql://localhost:5432/sampledb
driver: postgres
user: ${system.user.name}
password:
history: $vars.historyDir/postgres.hist

[db_mysql]
#aliases:
driver: mysql
url: jdbc:mysql://localhost:3306/sampledb
user: ${system.user.name}
password:
history: $vars.historyDir/mysql.hist

[db_sqlite3]
aliases: sqlite3
url: jdbc:sqlite:/tmp/sample.db
driver: sqlite
history: $vars.historyDir/sqlite3.hist

[db_oracle]
aliases: ora
schema: example
url: jdbc:oracle:thin:@localhost:1521:sampledb
user: ${system.user.name}
password:
driver: oracle
history: $vars.historyDir/scrgskd

[db_access]
driver: access
url: jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=/tmp/sample.mdb;DriverID=22}

2. Add Pivotal GemFireXd client driver "gemfirexd-client.jar" to "/Applications/sqlshell/lib"

3. With Pivotal GemFireXD cluster up and running connect and run some commands as shown below.
  
[Mon Oct 20 11:56:10 papicella@:~/vmware/software/sqlshell ] $ sqlshell gemfirexd,jdbc:gemfirexd://localhost:1527
SQLShell, version 0.8.1 (2012/03/16 09:43:31)
Copyright (c) 2009-2011 Brian M. Clapper
Using JLine
Type "help" for help. Type ".about" for more information.

sqlshell> .set schema APP

sqlshell> .show tables
ALL_EMPS               APPLES_OFFHEAP         CUSTOMERS
DEPT                   EMP                    EMPLOYEES
EMPS_IN_DEPT_10        EMPS_IN_DEPT_20        EMPS_IN_DEPT_30
EMPS_IN_DEPT_40        OFFICES                ORDERDETAILS
ORDERS                 PAYMENTS               PERSON
PRODUCTLINES           PRODUCTS               TEST_ASYNC
TEST_ASYNC2            TEST_CALLBACKLISTENER
sqlshell> select * from dept;
Execution time: 0.21 seconds
Retrieval time: 0.6 seconds
7 rows returned.

DEPTNO  DNAME       LOC
------  ----------  --------
10      ACCOUNTING  NEW YORK
20      RESEARCH    DALLAS
30      SALES       CHICAGO
40      OPERATIONS  BRISBANE
50      MARKETING   ADELAIDE
60      DEV         PERTH
70      SUPPORT     SYDNEY

sqlshell> .capture to /tmp/results.csv
Capturing result sets to: /tmp/results.csv

sqlshell> select * from emp where deptno = 10;
Execution time: 0.18 seconds
Retrieval time: 0.5 seconds
3 rows returned.

EMPNO  ENAME   JOB        MGR   HIREDATE               SAL   COMM  DEPTNO
-----  ------  ---------  ----  ---------------------  ----  ----  ------
7782   CLARK   MANAGER    7839  1981/06/09 00:00:00.0  2450  NULL  10
7839   KING    PRESIDENT  NULL  1981/11/17 00:00:00.0  5000  NULL  10
7934   MILLER  CLERK      7782  1982/01/23 00:00:00.0  1300  NULL  10

sqlshell> .capture off
No longer capturing query results.

sqlshell>

Thursday, 11 September 2014

Creating a Pivotal GemFireXD Data Source Connection from IntelliJ IDEA 13.x

In order to create a Pivotal GemFireXD Data Source Connection from IntelliJ 13.x , follow the steps below. You will need to define a GemFireXD driver , prior to creating the Data Source itself.

1. Bring up the Databases panel.

2. Define a GemFireXD Driver as follows


3. Once defined select it by using the following options. Your using the Driver you created at #2 above

+ -> Data Source -> com.pivotal.gemfirexd.jdbc.ClientDriver 

4. Create a Connection as shown below. You would need to having a running GemFireXD cluster at this point in order to connect.



5.  Once connected you can browse objects as shown below.



6. Finally we can run DML/DDL directly from IntelliJ as shown below.