Thrift入门

来源:互联网 发布:游戏心理学 知乎 编辑:程序博客网 时间:2024/05/17 06:32

简单实现thrift demo

1、首先编写描述文件:

namespace java com.plateno.web.thriftstruct 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{@Overridepublic int addPerson(Person person) throws TException {System.out.println(person.toString());return 0;}@Overridepublic 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;}@Overridepublic boolean deletePerson(int id) throws TException {System.out.println(id);return false;}@Overridepublic 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。

0 0
原创粉丝点击