Thrift使用实例
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Thrift使用实例相关的知识,希望对你有一定的参考价值。
首先下载thrift.exe,和对应lib包。注意版本一定要一致。
否则编译会不识别出现错误。
否则编译会不识别出现错误。
可能会出现org.slf4j这个错误,那么你要把slf4j-api.jar下载下来引入到你的project中
namespace java com.nerd.thrift.service /** * */ service sayThriftService{ void say(); }通过在命令行中转到 thrift-1.8.0.exe -gen java sayThriftService
在磁盘目录中(com.nerd.thrift.service)可发现这个脚本对应的java代码
例如以下:
public class sayThriftService { /** * */ public interface Iface { public void say() throws org.apache.thrift.TException; } public interface AsyncIface { public void say(org.apache.thrift.async.AsyncMethodCallback<AsyncClient.say_call> resultHandler) throws org.apache.thrift.TException; } public static class Client extends org.apache.thrift.TServiceClient implements Iface { public static class Factory implements org.apache.thrift.TServiceClientFactory<Client> { public Factory() {} public Client getClient(org.apache.thrift.protocol.TProtocol prot) { return new Client(prot); } public Client getClient(org.apache.thrift.protocol.TProtocol iprot, org.apache.thrift.protocol.TProtocol oprot) { return new Client(iprot, oprot); } } ...................省略(详细看自己的生成代码)
先写一个Server类:
package com.nerd.clq; import org.apache.thrift.TException; import org.apache.thrift.TProcessor; import org.apache.thrift.protocol.TBinaryProtocol; import org.apache.thrift.protocol.TProtocolFactory; 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 com.nerd.clq.thrift.sayThriftService; import com.nerd.clq.thrift.sayThriftService.Iface; public class Server implements sayThriftService.Iface{ private static TServer server; @Override public void say() throws TException { System.out.println(System.currentTimeMillis()); } public static void main(String[] args) throws TException { Server server1 = new Server(); TServerSocket serverTransport = new TServerSocket(8080); TProtocolFactory proFactory = new TBinaryProtocol.Factory(); sayThriftService.Processor<Iface> processor = new sayThriftService.Processor<Iface>(server1); Args arg = new Args(serverTransport) { }.protocolFactory(proFactory).processor(processor); server = new TThreadPoolServer(arg); //启动服务(先启动这个类,然后启动client类) server.serve(); } }
client客户端类
package com.nerd.clq; 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 com.nerd.clq.thrift.sayThriftService; public class Client { public static void main(String[] args) throws TException { TTransport transport = new TSocket("localhost", 8080); TProtocol protocol = new TBinaryProtocol(transport); sayThriftService.Client client = new sayThriftService.Client(protocol); transport.open(); client.say(); transport.close(); } }
server编写的一般步骤:
1. 创建Handler
2. 基于Handler创建Processor
3. 创建Transport
4. 创建Protocol方式
5. 基于Processor, Transport和Protocol创建Server
6. 执行Server
1. 创建Handler
2. 基于Handler创建Processor
3. 创建Transport
4. 创建Protocol方式
5. 基于Processor, Transport和Protocol创建Server
6. 执行Server
client编写的一般步骤:
1. 创建Transport
2. 创建Protocol方式
3. 基于Transport和Protocol创建Client
4. 执行Client的方法
1. 创建Transport
2. 创建Protocol方式
3. 基于Transport和Protocol创建Client
4. 执行Client的方法
创建Transport的时候。一般都须要创建对应的Socket。
以上是关于Thrift使用实例的主要内容,如果未能解决你的问题,请参考以下文章