用java连接apache geode
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,昨天研究了半天apache geode,通过gfsh命令查询和操作比较简单,但是如何通过程序查询因为资历太少,没有搞懂,试验了半天才明白1.创建测试regioncreate region --name
千家信息网最后更新 2026年11月01日用java连接apache geode
昨天研究了半天apache geode,通过gfsh命令查询和操作比较简单,但是如何通过程序查询因为资历太少,没有搞懂,试验了半天才明白
1.创建测试region
create region --name=user --type=REPLICATE_PERSISTENT
2.用eclipse创建maven工程
修改pom.xml,需要引入gemfire-8.2.0.jar,这个在
4.0.0 io.proinsight hellogeode 0.0.1-SNAPSHOT jar hellogeode http://maven.apache.org UTF-8 org.apache.geode geode-core 1.2.0 org.apache.geode geode-json 1.2.0 org.apache.geode geode-common 1.2.0 log4j log4j 1.2.17 org.apache.logging.log4j log4j-core 2.8.2 org.apache.logging.log4j log4j-api 2.8.2 log4j log4j 1.2.17 commons-codec commons-codec 1.10 org.apache.commons commons-lang3 3.4 junit junit 4.12 com.alibaba fastjson 1.2.13 org.apache.maven.plugins maven-compiler-plugin 3.3 1.8 1.8 org.apache.maven.plugins maven-jar-plugin 2.6 true lib/ io.proinsight.hellogeode.App org.apache.maven.plugins maven-dependency-plugin 2.10 copy-dependencies package copy-dependencies ${project.build.directory}/lib
新建UserBean.java
package io.proinsight.hellogeode;import java.io.DataInput;import java.io.DataOutput;import java.io.IOException;import java.util.Date;import org.apache.geode.DataSerializable;import org.apache.geode.DataSerializer;public class UserBean implements DataSerializable{ /** * 必须有这个方法,否则查询会报没有init()这个方法 * */ public UserBean() { } public UserBean(int id2, int i, String string, Date date) { // TODO Auto-generated constructor stub this.id=id2; this.age=i; this.name=string; this.createTime=date; } /** * id * */ private int id; /** * 年龄 * */ private int age; /** * 姓名 * */ private String name; /** * 创建时间 * */ private Date createTime; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public void fromData(DataInput in) throws IOException, ClassNotFoundException { this.id = in.readInt(); this.age=in.readInt(); this.name = in.readUTF(); this.createTime = DataSerializer.readDate(in); } public void toData(DataOutput out) throws IOException { out.writeInt(this.id); out.writeInt(this.age); out.writeUTF(this.name); DataSerializer.writeDate(this.createTime, out); }}修改App.java
package io.proinsight.hellogeode;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import org.apache.geode.DataSerializer;import org.apache.geode.cache.Region;import org.apache.geode.cache.RegionFactory;import org.apache.geode.cache.client.ClientCache;import org.apache.geode.cache.client.ClientCacheFactory;import org.apache.geode.cache.client.ClientRegionFactory;import org.apache.geode.cache.client.ClientRegionShortcut;import org.apache.geode.cache.query.internal.ResultsBag;import com.alibaba.fastjson.JSON;/** * Hello world! * */public class App { String regionName="user"; int userNum=10; public static void main( String[] args ) { new App().test(); } public void test(){ Region region = null; ClientCache cache = new ClientCacheFactory().addPoolLocator("192.168.60.50", 10334).create(); ClientRegionFactory rf = cache.createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY); //打开user表 region = rf.create(regionName); System.out.println("开始创建用户"); create(region); select(region); System.out.println("完成创建用户"); System.out.println("开始修改用户"); update(region); select(region); System.out.println("完成修改用户"); System.out.println("开始删除用户"); delete(region,108); select(region); System.out.println("完成删除用户"); System.out.println("开始清空表"); truncate(region); select(region); System.out.println("完成清空表"); //关闭表 region.close(); } /** * 查询user表 * */ public void select(Region region){ try { Object objList = region.query("select * from /"+regionName+" u where u.age > 15"); if(objList != null && objList instanceof ResultsBag){ Iterator iter = ((ResultsBag) objList).iterator(); while(iter.hasNext()){ UserBean userBean = (UserBean) iter.next(); System.out.println("User信息:"+JSON.toJSONString(userBean)); } } Object obj = region.get(108); if(obj != null && obj instanceof UserBean){ System.out.println("User108信息"+JSON.toJSONString(obj)); } }catch (Exception e){ e.printStackTrace();// logger.error("error occured.", e); } } /** * 增加10个 * */ public void create(Region region){ for (int i = 0; i < userNum; i++) { int id = i+100; region.put(id, new UserBean(id,10+i,"username:"+id,new Date())); } } /** * 修改 * */ public void update(Region region){ UserBean user108= (UserBean) region.get(108); if(user108 != null && user108 instanceof UserBean){ System.out.println("User108信息"+JSON.toJSONString(user108)); //修改年龄为 user108.setAge(12); region.put(user108.getId(), user108); } } /** * 删除某个用户 * */ public void delete(Region region,Integer id){ region.remove(id); } /** * 清空表 * */ public void truncate(Region region){ region.clear(); } }3.打包
maven install一下
在target目录下有对应的jar包
然后把hellogeode-0.0.1-SNAPSHOT.jar拷贝到geode服务器上某个目录例如/tmp/t/下
4.发布Jar到geode里
为啥要发布到geode里呢?因为我们用UserBean的序列化和反序列化作为表结构,因此deode查询时需要UserBean.class,因此我们发布hellogeode-0.0.1-SNAPSHOT.jar到geode,主要是为了把UserBean.class导入到geode里;
gfsh>deploy --jar=/tmp/t/hellogeode-0.0.1-SNAPSHOT.jar Member | Deployed JAR | Deployed JAR Location-------- | ----------------------------- | -----------------------------------------------------------------server50 | hellogeode-0.0.1-SNAPSHOT.jar | /opt/apache-geode-1.2.1/server50/hellogeode-0.0.1-SNAPSHOT.v1.jar
若是我们对UserBean有修改的话,需要先卸载jar,然后再重新发布
gfsh>undeploy --jar=hellogeode-0.0.1-SNAPSHOT.jar Member | Un-Deployed JAR | Un-Deployed From JAR Location-------- | ----------------------------- | -----------------------------------------------------------------server50 | hellogeode-0.0.1-SNAPSHOT.jar | /opt/apache-geode-1.2.1/server50/hellogeode-0.0.1-SNAPSHOT.v1.jargfsh>deploy --jar=/tmp/t/hellogeode-0.0.1-SNAPSHOT.jar Member | Deployed JAR | Deployed JAR Location-------- | ----------------------------- | -----------------------------------------------------------------server50 | hellogeode-0.0.1-SNAPSHOT.jar | /opt/apache-geode-1.2.1/server50/hellogeode-0.0.1-SNAPSHOT.v1.jar
5.测试
测试程序在eclipse里运行即可,不需要放到服务器上运行
在eclipse运行app.java
测试结果
开始创建用户[info 2017/09/27 13:09:13.422 CSTtid=0x17] AutoConnectionSource discovered new locators [slave1/211.98.71.195:10334][info 2017/09/27 13:09:13.511 CST tid=0x1] Updating membership port. Port changed from 0 to 51,084. ID is now bogon(92040:loner):0:0c29bdc1User信息:{"age":12,"createTime":1506488953578,"id":102,"name":"username:102"}User信息:{"age":15,"createTime":1506488953592,"id":105,"name":"username:105"}User信息:{"age":14,"createTime":1506488953588,"id":104,"name":"username:104"}User信息:{"age":10,"createTime":1506488953405,"id":100,"name":"username:100"}User信息:{"age":19,"createTime":1506488953611,"id":109,"name":"username:109"}User信息:{"age":13,"createTime":1506488953583,"id":103,"name":"username:103"}User信息:{"age":18,"createTime":1506488953606,"id":108,"name":"username:108"}User信息:{"age":11,"createTime":1506488953573,"id":101,"name":"username:101"}User信息:{"age":16,"createTime":1506488953597,"id":106,"name":"username:106"}User信息:{"age":17,"createTime":1506488953602,"id":107,"name":"username:107"}User108信息{"age":18,"createTime":1506488953606,"id":108,"name":"username:108"}完成创建用户开始修改用户User108信息{"age":18,"createTime":1506488953606,"id":108,"name":"username:108"}User信息:{"age":17,"createTime":1506488953602,"id":107,"name":"username:107"}User信息:{"age":12,"createTime":1506488953578,"id":102,"name":"username:102"}User信息:{"age":15,"createTime":1506488953592,"id":105,"name":"username:105"}User信息:{"age":12,"createTime":1506488953606,"id":108,"name":"username:108"}User信息:{"age":13,"createTime":1506488953583,"id":103,"name":"username:103"}User信息:{"age":19,"createTime":1506488953611,"id":109,"name":"username:109"}User信息:{"age":16,"createTime":1506488953597,"id":106,"name":"username:106"}User信息:{"age":11,"createTime":1506488953573,"id":101,"name":"username:101"}User信息:{"age":14,"createTime":1506488953588,"id":104,"name":"username:104"}User信息:{"age":10,"createTime":1506488953405,"id":100,"name":"username:100"}User108信息{"age":12,"createTime":1506488953606,"id":108,"name":"username:108"}完成修改用户开始删除用户User信息:{"age":15,"createTime":1506488953592,"id":105,"name":"username:105"}User信息:{"age":12,"createTime":1506488953578,"id":102,"name":"username:102"}User信息:{"age":16,"createTime":1506488953597,"id":106,"name":"username:106"}User信息:{"age":10,"createTime":1506488953405,"id":100,"name":"username:100"}User信息:{"age":13,"createTime":1506488953583,"id":103,"name":"username:103"}User信息:{"age":19,"createTime":1506488953611,"id":109,"name":"username:109"}User信息:{"age":11,"createTime":1506488953573,"id":101,"name":"username:101"}User信息:{"age":17,"createTime":1506488953602,"id":107,"name":"username:107"}User信息:{"age":14,"createTime":1506488953588,"id":104,"name":"username:104"}完成删除用户开始清空表完成清空表
信息
用户
查询
测试
运行
年龄
序列
方法
服务器
目录
程序
服务
下有
命令
天才
姓名
工程
拷贝
时间
结构
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网黑科技
互联网科技图片
南京欣网互联网络科技有限公司
广东猪兼强互联网科技有限公司
深圳互联网科技公司
青岛互联网科技公司
广西互联网科技公司
互联网 视角下的科技创新
恒生科技互联网指数分析
蓝色互联网科技
互联网科技热点资讯
互联网科技与管理
玉溪互联网科技怎么选
未来五年的互联网科技
互联网保险科技创业
阿里互联网科技企业
互联网科技快讯热点
互联网科技年终奖
西安有哪些互联网高科技企业
瑞安市蟠桃会互联网科技有限公司
有格互联网科技
国智互联网科技
疫情对互联网科技公司影响
智能科技公司是互联网公司吗
互联网 科技创业
云电互联网科技
海南购全球互联网科技
世界互联网科技公司市值排名
新兴科技互联网创新大赛颁奖典礼
东营紫格互联网科技