Client的开发顺序为:
1、定义Tsocket
2、将Socket包装到Transport(记得Transport要open() )
3、将Transport包装进Protocol
4、将Protocol包装到Client
5、调用Client的函数
6、最后关闭Transport
总之,Client就是“一步一步包进去“的过程:
- <span style="white-space:pre"> </span>//定义一个Socket
- TSocket socket=new TSocket("localhost", 8888);
- //定义一个transport层,这里使用NIOtransport
- TTransport transport=new TFramedTransport(socket);
- //打开transport层!!!!!!!
- transport.open();
- //定义一个protocol层,这里使用BinaryProtocol
- TProtocol protocol=new TBinaryProtocol(transport);
- //(客户端缺了个Processor层),所以不用定义
- //定义client
- Echo.Client client=new Echo.Client(protocol);
- //调用client,使用client的函数
- System.out.println(client.getEcho("Hello World!"));
- //关闭client
- transport.close();
Server的开发顺序为:
1、实现service的Iface,生成Handler
2、将Handler包装到Processor
3、定义一个ServerSocket
4、将ServerSocket包装到Server.Args对象中
5、使用“搭积木”的方式不断搭建args(Server的参数),包括Processor,Protocol,Transport等
6、最后将Args包装进Server
7、启动Server
总之,Server采用“填参数”的方法搭建起来:
- <span style="white-space:pre"> </span>//定义一个Processor层,包装Handler
- Echo.Processor processer=new Processor(new EchoHandler());
- //定义一个ServerSocket
- TNonblockingServerSocket serverSocket=new TNonblockingServerSocket(8888);
- //定义一个服务器参数对象,包装Socket
- // 单线程nio模式
- // TNonblockingServer.Args serverArgs=new TNonblockingServer.Args(serverSocket);
- // one selector,n worker模式
- // THsHaServer.Args serverArgs=new THsHaServer.Args(serverSocket);
- // n selector ,n worker模式
- TThreadedSelectorServer.Args serverArgs=new TThreadedSelectorServer.Args(serverSocket);
- //参数对象使用连续搭建模式,搭建出processor层,protocol层,和Transport层
- serverArgs.processor(processer)
- .protocolFactory(new TBinaryProtocol.Factory())
- .transportFactory(new TFramedTransport.Factory())
- .workerThreads(8)//Hsha和ThreadSelector特有的参数
- .selectorThreads(2);//ThreadSelector特有的参数
- //创建Server,传进参数对象
- // TServer server=new TNonblockingServer(serverArgs);
- // THsHaServer server =new THsHaServer(serverArgs);
- TThreadedSelectorServer server=new TThreadedSelectorServer(serverArgs);
- //启动Server
- System.out.println("server start...");
- server.serve();
注意:使用NIO模式时都要使用TFramedTransport,BIO不多加阐述
相关推荐
Thrift作为可伸缩的跨语言服务开发框架,网上的资源较少,这里是一个简单的入门小程序,文件中的mylib下包含了依赖的jar包,并且在file目录下放了一个简单的thrift文件和生成thrift-0.9.0.exe工具,直接使用 thrift-...
Thrift双向通讯java代码
Thrift中实现Java与Python的RPC互相调用示例代码;Thrift中实现Java与Python的RPC互相调用示例代码;Thrift中实现Java与Python的RPC互相调用示例代码
thrift 生成的java包 全部的包,一次下全了。。。
Thrift下java服务器与客户端开发指南[归纳].pdf
java代码使用thrift2操作hbase示例,thrift2连接hbase添加数据,单条查找,删除数据,根据扫描器查找,修改数据等测试实例
此文件为自己在Mac电脑上写的thrift的demo,使用maven 管理了小程序,并用thrift生成了源码,其中对thrift生成的源码,把override注销了,其他的没处理,如果感兴趣参考博客:...
一个java和python的thrift例子,其中java作为服务端,python作为客户端
NULL 博文链接:https://onlyor.iteye.com/blog/1700777
thrift java build jar
thrift 生成的java包httpclient-4.1.2.jar
Thrift0.9.1 示例代码 Java版本 Thrift0.9.1 示例代码 Java版本
thrift安装包以及JAVA的一个测试项目
Thrift Java 服务器 客户端通信,网上看到的,觉得不错就分享出来供大家一起共同分享学习。
Thrift入门及Java实例演示,文档及java演示源代码。包括thrift-0.11.0.exe
thrift通过http实现的一个java例子!
Thrift java demo实例,通过简单的例子,帮助初学者理解Thrift
采用java操作thrift代码示例
Apache Thrift Java实战源码,包含了客户端和服务端源码,客户端和服务端是分开的,如果需要放到一个工程,直接把Client.java文件复制到服务端运行即可。
thrift-0.9.2 for java 的依赖包,libthrift-0.9.2.jar