Example:
In this example we are using and existing GemFire cluster which has DEPT / EMP objects already existing in the distributed system as shown below.
gfsh>query --query="select * from /departments"; Result : true startCount : 0 endCount : 20 Rows : 4 deptno | name ------ | ---------- 40 | OPERATIONS 30 | SALES 10 | ACCOUNTING 20 | RESEARCH NEXT_STEP_NAME : END gfsh>query --query="select * from /employees"; Result : true startCount : 0 endCount : 20 Rows : 13 empno | deptno | name | job ----- | ------ | -------- | --------- 7380 | 40 | BLACK | CLERK 7373 | 40 | SIENA | CLERK 7377 | 20 | ADAM | CLERK 7370 | 10 | APPLES | MANAGER 7381 | 40 | BROWN | SALESMAN 7379 | 10 | FRANK | CLERK 7375 | 30 | ROB | CLERK 7371 | 10 | APICELLA | SALESMAN 7374 | 10 | LUCAS | SALESMAN 7378 | 20 | SALLY | MANAGER 7372 | 30 | LUCIA | PRESIDENT 7376 | 20 | ADRIAN | CLERK 7369 | 20 | SMITH | CLERK NEXT_STEP_NAME : END
1. client.xml (GemFire Client cache XML file)
<!DOCTYPE client-cache PUBLIC
"-//GemStone Systems, Inc.//GemFire Declarative Caching 7//EN"
"http://www.gemstone.com/dtd/cache7_0.dtd">
<client-cache>
<pdx>
<pdx-serializer>
<class-name>com.gemstone.gemfire.pdx.ReflectionBasedAutoSerializer</class-name>
<parameter name="classes">
<string>pivotal\.au\.se\.deptemp\.beans\..*</string>
</parameter>
</pdx-serializer>
</pdx>
<!-- No cache storage in the client region because of the PROXY client region shortcut setting. -->
<region name="departments">
<region-attributes refid="PROXY" pool-name="gfPool" />
</region>
<region name="employees">
<region-attributes refid="PROXY" pool-name="gfPool" />
</region>
</client-cache>
2. application-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gfe-data="http://www.springframework.org/schema/data/gemfire"
xmlns:gfe="http://www.springframework.org/schema/gemfire"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire-1.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/data/gemfire http://www.springframework.org/schema/data/gemfire/spring-data-gemfire-1.3.xsd">
<gfe:client-cache
id="client-cache"
cache-xml-location="classpath:client.xml"
pool-name="gfPool"
properties-ref="props" />
<gfe:pool id="gfPool" max-connections="10">
<gfe:locator host="localhost" port="10334"/>
</gfe:pool>
<gfe:lookup-region id="departments" name="departments" cache-ref="client-cache"/>
<gfe:lookup-region id="employees" name="employees" cache-ref="client-cache"/>
<gfe-data:repositories base-package="pivotal.au.se.deptemp.repos" />
<util:properties id="props" location="classpath:gemfire.properties"/>
</beans>
Here we simply import the client.xml file and then define the regions we wish to access from GemFire.3. TestGemFireTemplate.java
package pivotal.au.se.deptemp.test;
import java.util.Collection;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.data.gemfire.GemfireTemplate;
import pivotal.au.se.deptemp.beans.Employee;
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.query.SelectResults;
public class TestGemFireTemplate
{
private ConfigurableApplicationContext ctx = null;
public TestGemFireTemplate()
{
ctx = new ClassPathXmlApplicationContext("application-context.xml");
}
public void run ()
{
@SuppressWarnings("unchecked")
GemfireTemplate empTemplate = new GemfireTemplate((Region) ctx.getBean("employees"));
System.out.println("-> template.query() test \n ");
SelectResults<?> results = empTemplate.query("deptno = 40");
Collection<Employee> emps = (Collection<Employee>) results.asList();
for (Employee e: emps)
{
System.out.println(e.toString());
}
System.out.println("\n-> template.get(key) test \n ");
Employee emp = empTemplate.get("7373");
System.out.println(emp.toString());
System.out.println("\n-> template.find() test \n ");
SelectResults<Employee> clerkEmpResults =
empTemplate.find("SELECT * from /employees WHERE job=$1", "CLERK");
Collection<Employee> clerkEmps = (Collection<Employee>) clerkEmpResults.asList();
for (Employee e: clerkEmps)
{
System.out.println(e.toString());
}
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
TestGemFireTemplate test = new TestGemFireTemplate();
System.out.println("\nStarting Spring Data GemFire Template Test.... \n");
test.run();
System.out.println("\nAll done.... ");
}
}
Output as shown below.
Starting Spring Data GemFire Template Test....
-> template.query() test
Employee [empno=7380, name=BLACK, job=CLERK, deptno=40]
Employee [empno=7381, name=BROWN, job=SALESMAN, deptno=40]
Employee [empno=7373, name=SIENA, job=CLERK, deptno=40]
-> template.get(key) test
Employee [empno=7373, name=SIENA, job=CLERK, deptno=40]
-> template.find() test
Employee [empno=7369, name=SMITH, job=CLERK, deptno=20]
Employee [empno=7375, name=ROB, job=CLERK, deptno=30]
Employee [empno=7376, name=ADRIAN, job=CLERK, deptno=20]
Employee [empno=7380, name=BLACK, job=CLERK, deptno=40]
Employee [empno=7377, name=ADAM, job=CLERK, deptno=20]
Employee [empno=7379, name=FRANK, job=CLERK, deptno=10]
Employee [empno=7373, name=SIENA, job=CLERK, deptno=40]
All done....
No comments:
Post a Comment