用java连接apache geode
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,昨天研究了半天apache geode,通过gfsh命令查询和操作比较简单,但是如何通过程序查询因为资历太少,没有搞懂,试验了半天才明白1.创建测试regioncreate region --name
千家信息网最后更新 2025年11月07日用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安全错误
数据库的锁怎样保障安全
asp服务器构造
呼和浩特网络技术学院
网络安全事故分析会发言材料
acos 数据库
天龙八部服务器测速中登录不了
我的世界稳定服务器
官网服务器503错误是什么情况
冬奥会网络安全总结报告
青岛养生行业软件开发
日常网络安全总结
长沙望城软件开发公司有哪些
网络安全会展图
数据库怎么创建登录名
软件开发工程师待遇
北京大学数据库资源
方舟非官方服务器设置
软件开发任务分配内容
完美社区服务器怎么退
tls服务器
网络安全工作责任制重点责任
无障碍远程登录服务器
派派怎么换服务器在哪
启动器如何进服务器
信息网络技术获得了群体性突破
数据库与安全
940网络安全考研
数据库管理员密码在哪里
网络安全法明确
四项举措网络安全
网络技术的专业认知