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