您的位置:首页 > 其它

Thrift入门

2015-07-02 10:17 295 查看
简单实现thrift demo

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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: