首页 > 代码库 > Thrift使用实例
Thrift使用实例
首先下载thrift.exe,和相应lib包,注意版本号一定要一致,
否则编译会不识别出现错误。
可能会出现org.slf4j这个错误,那么你要把slf4j-api.jar下载下来引入到你的工程中
否则编译会不识别出现错误。
可能会出现org.slf4j这个错误,那么你要把slf4j-api.jar下载下来引入到你的工程中
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(); } }
服务器编写的一般步骤:
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
客户端编写的一般步骤:
1. 创建Transport
2. 创建Protocol方式
3. 基于Transport和Protocol创建Client
4. 运行Client的方法
1. 创建Transport
2. 创建Protocol方式
3. 基于Transport和Protocol创建Client
4. 运行Client的方法
创建Transport的时候,一般都需要创建相应的Socket。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。