1)安装thrift:到thrift官网下载exe文件,然后将文件重命名为thrift.exe,拷贝到c:\windows目录下(或者任何目录下),然后就可以在dos环境下使用了
c:\windows>thrift -gen java D:\mywork\javaProject\thriftTest\test.thrift ,输出的java文件默认输出到当前目录下c:\windows,也可以使用-o参数指定输出路径
2)下载相关依赖包
2.1)libthrift.jar ,下载地址:http://repo1.maven.org/maven2/org/apache/thrift/libthrift/0.9.0/
2.2)slf4j-api.jar
2.3)slf4j-simple.jar
3)编写thrift 接口文件
namespace cpp zam.thrift.test
namespace py thriftTest
namespace java com.zam.thrift.test
namespace php thriftTest
service Hello {
string helloString(1:string word)
}
4)编写接口实现代码
package com.zam.server;
import org.apache.thrift.TException;
import com.zam.thrift.test.Hello.Iface;
public class HelloImpl implements Iface{
private static int count = 0;
@Override
public String helloString(String word) throws TException {
// TODO Auto-generated method stub
count += 1;
System.out.println("get " + word + " " +count); return "hello " + word + " " + count;
}
}
5)编写server代码
package com.zam.server;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TBinaryProtocol.Factory;
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.TTransportException;
import com.zam.thrift.test.Hello;
import com.zam.thrift.test.Hello.Processor;
public class Server {
public void startServer() {
try {
System.out.println("thrift server open port 1234");
TServerSocket serverTransport = new TServerSocket(1234);
Hello.Processor process = new Processor(new HelloImpl());
Factory portFactory = new TBinaryProtocol.Factory(true, true);
Args args = new Args(serverTransport);
args.processor(process);
args.protocolFactory(portFactory);
TServer server = new TThreadPoolServer(args);
server.serve();
}
catch (TTransportException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println("thrift server init");
Server server = new Server();
System.out.println("thrift server start");
server.startServer();
System.out.println("thrift server end");
}
}
6)编写client 代码
package com.zam.server;
import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TTransportException;
import com.zam.thrift.test.Hello;
public class Client {
public void startClient() {
TTransport transport;
try {
System.out.println("thrift client connext server at 1234 port ");
transport = new TSocket("localhost", 1234);
TProtocol protocol = new TBinaryProtocol(transport);
Hello.Client client = new Hello.Client(protocol);
transport.open();
System.out.println(client.helloString("panguso"));
transport.close();
System.out.println("thrift client close connextion");
} catch (TTransportException e) {
e.printStackTrace();
} catch (TException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println("thrift client init ");
Client client = new Client();
System.out.println("thrift client start ");
client.startClient();
System.out.println("thrift client end ");
}
}
8)运行server和client代码
8.1)启动server端
thrift server init
thrift server start
thrift server open port 1234
8.2)启动client端
thrift client init
thrift client start
thrift client connext server at 1234 port
hello panguso 1
thrift client close connextion
thrift client end
通信框架浅析--google protobuf vs facebook thirft,布布扣,bubuko.com
通信框架浅析--google protobuf vs facebook thirft
原文:http://itmartin.blog.51cto.com/4508901/1539767