用java连接apache geode
发表于:2024-09-26 作者:千家信息网编辑
千家信息网最后更新 2024年09月26日,昨天研究了半天apache geode,通过gfsh命令查询和操作比较简单,但是如何通过程序查询因为资历太少,没有搞懂,试验了半天才明白1.创建测试regioncreate region --name
千家信息网最后更新 2024年09月26日用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安全错误
数据库的锁怎样保障安全
关于软件开发的公司
厦门同安app软件开发
互联网服务器运营商
世界网络安全大赛谁赢了
黄浦区本地软件开发常见问题
重庆网络技术学习
怒江互联网科技在哪里
网络安全人才培养的重要性
微三云软件开发廖会灵
学术数据库对高校的意义
国家网络安全工作规定
大一上学期网络技术期末考试
武汉vr软件开发
免编程手机软件开发工具
金蝶软件开发入门
理解数据库
数据库维护计划怎么自动删除
淄博非凡软件开发
达梦数据库导入多个文件
大连锦程网络技术有限公司电话
网络安全不能做什么
合肥win10ftp服务器托管
软件开发bug率
硬度软件开发
tomcat服务器集群
sqlplus显示数据库乱码
广东贸易出口统计数据库
鲲鹏服务器和x86服务器哪个贵
去哪看微信公众号数据库
易语言足球数据库