Thrift入门

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值