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