Apache Thrift - java开发教程
来源:互联网 发布:淘宝怎么提高收藏宝贝 编辑:程序博客网 时间:2024/06/15 09:44
1.开发所需要的jar包:
<dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId> <version>0.9.0</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.12</version> </dependency
2. 安装Thrift环境:
安装thrift:到thrift官网下载exe文件,然后将文件重命名为thrift.exe,拷贝到c:\windows目录下(或者任何目录下),然后就可以在dos环境下使用了
c:\windows>thrift -gen java D:\mywork\javaProject\thriftTest\hello.thrift ,输出的java文件默认输出到当前目录下c:\windows,也可以使用-o参数指定输出路径
3.编写thrift 接口文件:
namespace java com.wolong.thrift service Hello{ string helloString(1:string para) i32 helloInt(1:i32 para) bool helloBoolean(1:bool para) void helloVoid() string helloNull() }
4.生成代码:
在wondows cmd中,切换到thrift.exe所在目录,运行一下代码:
thrift -o <output directory> -gen java Hello.thrift注意:.thrift文件要与thrift.exe放在同一目录下
完成后在指定目录下会生成一个目录gen-java,里面有Hello.java。
5.创建工程:
打开Eclipse或者Myeclipse,创建一个Java工程:导入刚才生成的Hello.java文件。
5.1 编写HelloServiceImpl 接口,接口实现Thrift定义文件中的服务。
import org.apache.thrift.TException;public class HelloServiceImpl implements Hello.Iface{ public boolean helloBoolean(boolean para) throws TException{ return para; } public int helloInt(int para) throws TException{ try { Thread.sleep(20000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return para; } public String helloNull() throws TException{ return null; } public String helloString(String para) throws TException{ return para; } public void helloVoid() throws TException{ System.out.println("Hello World!"); }}
import org.apache.thrift.TProcessor;import org.apache.thrift.protocol.TBinaryProtocol;import org.apache.thrift.protocol.TBinaryProtocol.Factory;import org.apache.thrift.server.TServer;import org.apache.thrift.server.TSimpleServer;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.TTransportException;public class HelloServiceServer { /** * 启动thrift服务器 * @param args */ public static void main(String[] args) { try{ //设置服务器端口为7911 TServerSocket serverTransport = new TServerSocket(7911); //设置协议工厂为TBinaryProtocol.Factory Factory proFactory = new TBinaryProtocol.Factory(); //关联处理器与Hello服务的实现 TProcessor processor = new Hello.Processor<Hello.Iface>(new HelloServiceImpl()); TServer.Args tArgs = new TServer.Args(serverTransport); tArgs.processor(processor); tArgs.protocolFactory(proFactory); //使用TSimpleServer TServer server = new TSimpleServer(tArgs); System.out.println("Start server on port 7911...."); server.serve(); }catch(TTransportException e){ e.printStackTrace(); } }}
5.3 编写客户端
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;public class HelloServiceClient { /** * 调用Hello服务 * @param args */ public static void main(String[] args) { try { //设置调用的服务器为本地,端口为7911 TTransport transport = new TSocket("localhost", 7911); transport.open(); //设置传输协议为TBinaryProtocol TProtocol protocol = new TBinaryProtocol(transport); Hello.Client client = new Hello.Client(protocol); client.helloVoid(); transport.close(); } catch (TTransportException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
5.4 运行结果
先运行服务器端,再运行客户端;
结果:Start server on port 7911....
Hello World!
二 : 服务模型实例演示(java)
注:Hello.java / HelloServiceImpl.java 见上生成的代码;
2.1 TSimpleServer服务端:单线程服务器端使用标准的阻塞式 I/O,简单的单线程服务模型
2.2 TThreadPoolServer 服务模型:线程池服务模型(多线程服务器端使用标准的阻塞式I/O),使用标准的阻塞式IO,预先创建一组线程处理请求
2.3 TNonblockingServer 服务模型/多线程服务器端使用非阻塞式 I/O :使用非阻塞式IO,服务端和客户端需要指定 TFramedTransport 数据传输的方式。
2.4 THsHaServer 服务模型:半同步半异步的服务端模型,需要指定为: TFramedTransport 数据传输的方式。
2.5 AsynClient 异步客户端
- Apache Thrift - java开发教程
- Apache Thrift 官方JAVA教程
- Apache Thrift 官方JAVA教程
- Apache Thrift 官方JAVA教程
- Apache Thrift - java开发详解
- Apache Thrift - java开发详解
- Apache Thrift - java开发详解
- Apache Thrift - java开发详解
- Thrift开发教程
- [Thrift]Apache Thrift入门Java实例
- Apache Thrift 介绍与开发
- Apache Thrift之java入门
- java thrift开发姿势
- Apache Thrift
- Apache Thrift
- Apache Thrift
- apache thrift
- Apache thrift
- 部署spring boot应用
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
- system系统调用的使用
- MyEclipse非常方便的快捷键
- Android 自动更新 教你如何写自己的更新
- Apache Thrift - java开发教程
- HDU 2612 find a way(双搜索)BFS
- 第三章 C++之VC++6.0使用与快捷键
- 设计模式之建造者模式
- 2016 Multi-University Training Contest 4 Another Meaning
- CSS3弹性盒子布局
- 算法竞赛入门经典(第二版)-刘汝佳-第四章 函数与递归 互联网协议网络Uva1590
- Android selector
- iOS 下使用 OpenCV 实现图像处理