Windows下Thrift环境搭建与示例.docx_第1页
Windows下Thrift环境搭建与示例.docx_第2页
Windows下Thrift环境搭建与示例.docx_第3页
Windows下Thrift环境搭建与示例.docx_第4页
Windows下Thrift环境搭建与示例.docx_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Windows下Thrift环境搭建与示例目录WINDOWS下THRIFT环境搭建与示例1目录21.引言32.环境搭建41.1.java环境41.2.Thrift环境43.THRIFT的基本概念41.3.数据类型41.4.服务端编码基本步骤:51.5.客户端编码基本步骤:51.6.数据传输协议54.实例演示74.1.thrift生成代码74.1.1.创建thrift文件74.1.2.编译thrift文件74.2.代码实现84.2.1.实现服务端接口84.2.2.TSimpleServer服务端94.2.3.客户端104.3.依赖库设置134.4.运行131. 引言本文档介绍windows环境下thrift的环境搭建与开发。IDE为Eclipse,语言为Java。Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C+, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的、高效的服务。官网地址:参考:/soa/rpc/thrift-sample//jnb/jnbJun2009.html/thrift/static/files/thrift-20070401.pdf/search-engine/thrift-for-windows//search-engine/thrift-rpc/2. 环境搭建1.1. java环境下载JDK和ANT,并且配置环境变量。测试是否配置成功,如下:下载安装Eclipse,用于java程序的开发。1.2. Thrift环境下载Thrift: /download解压thrift-0.9.1.tar.gz,复制到C盘。然后命令行在C:thrift-0.9.1libjava目录下运行ant进行自动编译,会在C:thrift-0.9.1libjavabuild 目录下看到编译好的lib包:libthrift-0.9.1.jar3. Thrift的基本概念1.3. 数据类型在*.thrift文件中,有以下基本类型。 基本类型:o bool:布尔值,true 或 false,对应 Java 的 booleano byte:8 位有符号整数,对应 Java 的 byteo i16:16 位有符号整数,对应 Java 的 shorto i32:32 位有符号整数,对应 Java 的 into i64:64 位有符号整数,对应 Java 的 longo double:64 位浮点数,对应 Java 的 doubleo string:utf-8编码的字符串,对应 Java 的 String 结构体类型:o struct:定义公共的对象,类似于 C 语言中的结构体定义,在 Java 中是一个 JavaBean 容器类型:o list:对应 Java 的 ArrayListo set:对应 Java 的 HashSeto map:对应 Java 的 HashMap 异常类型:o exception:对应 Java 的 Exception 服务类型:o service:对应服务的类1.4. 服务端编码基本步骤: 实现服务处理接口impl 创建TProcessor 创建TServerTransport 创建TProtocol 创建TServer 启动Server1.5. 客户端编码基本步骤: 创建Transport 创建TProtocol 基于TTransport和TProtocol创建 Client 调用Client的相应方法1.6. 数据传输协议 TBinaryProtocol : 二进制格式. TCompactProtocol : 压缩格式 TJSONProtocol : JSON格式 TSimpleJSONProtocol : 提供JSON只写协议, 生成的文件很容易通过脚本语言解析tips:客户端和服务端的协议要一致4. 实例演示4.1. thrift生成代码4.1.1. 创建thrift文件创建Thrift文件:.ThriftdemoHello.thrift,内容如下:1namespace java com.micmiu.thrift.demo23service HelloWorldService 4string sayHello(1:string username)5目录结构如下:其中,HelloClient和ThriftHelloWorld是两个Eclipse的workspace,分别是java编写的Thrift client和server。后面将介绍。4.1.2. 编译thrift文件thrift-0.9.1.exe是官网提供的windows下编译工具,运用这个工具生成对应的java代码,在java开发client和server时使用:thrift-0.9.1.exe -r -gen java ./demoHello.thrift截图如下:生成后的目录结构如下:在.Thriftgen-javacommicmiuthriftdemo文件夹中生成了java文件:HelloWorldService.java。 这个文件需要添加到服务端和客户端的工程中。4.2. 代码实现4.2.1. 实现服务端接口用Eclipse打开workspace,位于.ThriftThriftHelloWorld文件夹。新建一个java project,名为“Server”。在工程中,新建文件:HelloWorldImpl.java 。内容如下:package com.micmiu.thrift.demo; import org.apache.thrift.TException;public class HelloWorldImpl implements HelloWorldService.Iface public HelloWorldImpl() Overridepublic String sayHello(String username) throws TException return Hi, + username + welcome to my blog ;package这一句会报错,选择“move to”来解决,如下图:4.2.2. TSimpleServer服务端该例子中使用简单的单线程服务模型,一般用于测试。在java工程中新建文件:HelloServerDemo.java 。代码如下:package com.micmiu.thrift.demo;import org.apache.thrift.TProcessor;import tocol.TBinaryProtocol;import tocol.TCompactProtocol;import tocol.TJSONProtocol;import tocol.TSimpleJSONProtocol;import org.apache.thrift.server.TServer;import org.apache.thrift.server.TSimpleServer;import org.apache.thrift.transport.TServerSocket;public class HelloServerDemo public static final int SERVER_PORT = 8090;public void startServer() try System.out.println(HelloWorld TSimpleServer start .);TProcessor tprocessor = new HelloWorldService.Processor(new HelloWorldImpl();/ HelloWorldService.Processor tprocessor =/ new HelloWorldService.Processor(/ new HelloWorldImpl();/ 简单的单线程服务模型,一般用于测试TServerSocket serverTransport = new TServerSocket(SERVER_PORT);TServer.Args tArgs = new TServer.Args(serverTransport);tAcessor(tprocessor);tAtocolFactory(new TBinaryProtocol.Factory();/ tAtocolFactory(new TCompactProtocol.Factory();/ tAtocolFactory(new TJSONProtocol.Factory();TServer server = new TSimpleServer(tArgs);server.serve(); catch (Exception e) System.out.println(Server start error!);e.printStackTrace();/* * param args */public static void main(String args) HelloServerDemo server = new HelloServerDemo();server.startServer();将HelloWorldService.java也添加到这个工程中。工程的结构如下:4.2.3. 客户端打开一个新的Eclipse界面,workspace位于.Thrift HelloClient文件夹。新建一个java project,名为“Client”。在工程中,新建文件:HelloClientDemo.java 。内容如下:package com.micmiu.thrift.demo;import org.apache.thrift.TException;import tocol.TBinaryProtocol;import tocol.TCompactProtocol;import tocol.TJSONProtocol;import tocol.TProtocol;import org.apache.thrift.transport.TSocket;import org.apache.thrift.transport.TTransport;import org.apache.thrift.transport.TTransportException;public class HelloClientDemo public static final String SERVER_IP = localhost;public static final int SERVER_PORT = 8090;public static final int TIMEOUT = 30000;/* * * param userName */public void startClient(String userName) TTransport transport = null;try transport = new TSocket(SERVER_IP, SERVER_PORT, TIMEOUT);/ 协议要和服务端一致TProtocol protocol = new TBinaryProtocol(transport);/ TProtocol protocol = new TCompactProtocol(transport);/ TProtocol protocol = new TJSONProtocol(transport);HelloWorldService.Client client = new HelloWorldService.Client(protocol);transport.open();String result = client.sayHello(userName);System.out.println(Thrify client result =: + result); catch (TTransportException e) e.printStackTrace(); catch (TException e) e.printStackTrace(); finally if

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论