简单实现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。