Thrift入门
2015-07-02 10:17
295 查看
简单实现thrift demo
1、首先编写描述文件:
2、编译描述文件(需要下载编译器,我的是thrift-0.9.2.exe)
3、把生成的java文件放到工程,我的文件名是Person.java、PersonService.java
4、实现接口:
5、编写服务器端
6、编写客户端
1、首先编写描述文件:
namespace java com.plateno.web.thrift struct Person { 1:i32 id; 2:string username; 3:string password; } service PersonService { i32 addPerson(1:Person person), Person findPerson(1:i32 id), bool deletePerson(1:i32 id), bool updatePerson(1:Person person) }
2、编译描述文件(需要下载编译器,我的是thrift-0.9.2.exe)
thrift-0.9.2.exe -gen java Person.thrift
3、把生成的java文件放到工程,我的文件名是Person.java、PersonService.java
4、实现接口:
package com.plateno.web.thrift; import org.apache.thrift.TException; public class PersonServiceImpl implements PersonService.Iface{ @Override public int addPerson(Person person) throws TException { System.out.println(person.toString()); return 0; } @Override public Person findPerson(int id) throws TException { System.out.println(id); Person p = new Person(); p.setId(520); p.setUsername("username"); p.setPassword("password"); return p; } @Override public boolean deletePerson(int id) throws TException { System.out.println(id); return false; } @Override public boolean updatePerson(Person person) throws TException { System.out.println(person.toString()); return false; } }
5、编写服务器端
package com.plateno.web.thrift; import java.net.InetSocketAddress; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.server.TServer; import org.apache.thrift.server.TThreadPoolServer; import org.apache.thrift.server.TThreadPoolServer.Args; import org.apache.thrift.transport.TServerSocket; import org.apache.thrift.transport.TServerTransport; import org.apache.thrift.transport.TTransportFactory; public class ThrifServerTest { public static void main(String[] args) throws Exception{ PersonService.Processor<PersonServiceImpl> process = new PersonService.Processor<PersonServiceImpl>(new PersonServiceImpl()); TServerTransport serverTransport = new TServerSocket(new InetSocketAddress("0.0.0.0", 7788)); Args arg = new Args(serverTransport); arg.processor(process); arg.protocolFactory(new TBinaryProtocol.Factory(true, true)); arg.transportFactory(new TTransportFactory()); TServer server = new TThreadPoolServer(arg); System.out.println("begin...."); server.serve(); System.out.println("end...."); server.stop(); } }
6、编写客户端
package com.plateno.web.thrift; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.protocol.TProtocol; import org.apache.thrift.transport.TSocket; import org.apache.thrift.transport.TTransport; public class ThrirfClientTest { public static void main(String[] args) throws Exception{ TTransport transport = new TSocket("127.0.0.1", 7788); TProtocol protocol = new TBinaryProtocol(transport); transport.open(); PersonService.Client client = new PersonService.Client(protocol); Person person = new Person(); person.setId(1); person.setUsername("name"); person.setPassword("pass"); int i = client.addPerson(person); System.out.println(i); Person p = client.findPerson(1); System.out.println(p); transport.close(); } }运行成功,yeah。
相关文章推荐
- PDB符号文件与Windows下利用Windbg 分析dump
- H5+PhoneGap开发学习资源
- Why No Guaranteed Delivery
- 实现可以滑动的GrildView,类似美团网首页的GrildView功能菜单
- eclipse编译异常修正:the project cannot be built until its prerequisite...
- 升级xcode6.4之后插件不能使用的问题
- 软件分发管理器Secure Delivery Center基本概念概述(四)
- sql语句中针对日期格式的处理
- UVA 11489 Integer Game(博弈,规律)
- Android studio第一次使用配置(三)gradle项目构建
- MasterCAM二次开发(一)
- C# MongoDB 操作
- PHP上传文件限制的大小
- 转:HashMap深度解析(一)
- IPHONE目录说明
- Android 开发系列 2 Activity
- MFC 获取分辨率
- PHP.ini安全配置检测工具pcc简单介绍
- 甲骨文终获Java编程语言版权
- Spring MVC 文件下载 - 兼容IE