用java连接apache geode
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,昨天研究了半天apache geode,通过gfsh命令查询和操作比较简单,但是如何通过程序查询因为资历太少,没有搞懂,试验了半天才明白1.创建测试regioncreate region --name
千家信息网最后更新 2025年02月02日用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 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安全错误
数据库的锁怎样保障安全
青海省网络安全
原神小米属于什么服务器
文件 上传 服务器
网络安全 红蓝队
网络安全与绿色上网
淮安酷虎网络技术研发中心
cfhd服务器是多少tick
服务器管理机房it维保厂商
计算机软件开发的利润一般
新冠肺炎期间的网络安全事件
数据库星号打不上去
jsp加数据库验证
服务器在美国美利坚
网络安全攻防案例论文
联想rd340服务器价格
巫溪java软件开发
华为网络技术参考文献
网络安全风控系统的功能
无锡网络安全工程师招聘
宁波小绵羊网络技术有限公司
海外服务器活动
服务器系统版本
太原网络安全工程师证
网络安全结构层
服务器在美国美利坚
软件开发工具的属性
jsp 连接数据库的增加
软件开发各类模型
网安新谈网络安全
dell戴尔数据库