apache thrift java例子_Apache Thrift入门2-Java代码实现例子

在上一篇文章中提到了Thrift的架构、传输协议(Ref),本篇文章将对Thrift的入门实例进行介绍。 分为如下5个部分: 运行环境、安装/配置、脚本文件、创建代码、运行程序。

一、开发环境(清单1)

1.操作系统

Server-Linux / Client-WinXP

2.SDK

Sun JDK1.5+

3.需要的jar依赖包

libthrift.jar

slf4j-api-1.5.8.jar

slf4j-log4j12-1.5.8.jar

log4j-1.2.15.jar

4.编译工具

Apache Ant  & Apache ivy

二、安装/配置 (清单2)

1.下载thrift源文件

http://labs.renren.com/apache-mirror//incubator/thrift/0.5.0-incubating/thrift-0.5.0.tar.gz

2.编译thrift源文件

1)解压 thrift-0.5.0.tar.gz

2)用ant编译源代码,进入x:\thrift-0.5.0\lib\java目录,执行ant,通过ant中的ivy工具会自动从站点下载所需要的依赖包,编译完成后如图所示:

complie-thirtf.png?psid=1

3)编译过程中下载的依赖包在x:\thrift-0.5.0\lib\java\build\ivy\lib 目录下可以看见下载的jar依赖包,将编译成功以后的jar包加入Eclipse的开发环境中。

三、脚本文件(清单3)

1.创建脚本

创建脚本文件 testJava.thrift ,脚本文件内容如下:

namespace java com.javabloger.gen.code   # 注释1   定义生成代码的命名空间,与你需要定义的package相对应。

struct Blog {   #  注释2.1 定义实体名称和数据结构,类似你业务逻辑中的pojo get/set

1: string topic   #  注释2.2  参数类型可以参见 Thrift wiki

2: binary content

3: i64    createdTime

4: string id

5: string ipAddress

6: map props

}

service ThriftCase { #  注释3    代码生成的类名,你的业务逻辑代码需要实现代码生成的ThriftCase.Iface接口

i32 testCase1(1:i32 num1, 2:i32 num2, 3:string  num3) #注释4.1方法名称和方法中的入参,入参类型参见wiki

list testCase2(1:map  num1)

void testCase3()

void testCase4(1:list blog)   #  注释4.2   list 是thrift中基本数据类型中的一种,list中包含的Blog对象是上面struct中定义的

}

2.运行脚本

1)从 thrift 站点下载windows版本的编译工具,下载地址:http://labs.renren.com/apache-mirror//incubator/thrift/0.5.0-incubating/thrift-0.5.0.exe

2)通过Thrift的脚本文件,运行 thrift 命令创建生成的代码,例如:执行 thrift -gen java x:\testJava.thrift  命令,在当前运行的盘符下,可看见gen-java目录,在这里目录中可以看见生成的java代码,更多thrift 命令内容,请参见thrift命令自带的help。

3.Thrift 中的基本数据类型 (清单4)

类型 描述

bool true, false

byte 8位的有符号整数

i16 16位的有符号整数

i32 32位的有符号整数

i64 64位的有符号整数

double 64位的浮点数

string UTF-8编码的字符串

binary 字符数组

struct 结构体

list 有序的元素列表,类似于STL的vectorset 无序的不重复元素集,类似于STL的set

map key-value型的映射,类似于STL的map

exception 是一个继承于本地语言的exception基类

service 服务。包含多个函数接口(纯虚函数)

四、创建代码(清单5)

我将示例工程分了4个包,如下所示:

\com\javabloger

\client               # 1.客户端测试代码

\gen\code              # 2.通过脚本生成的class

\layer\transport       # 3.服务器端代码和定义的传输协议

\layer\business      # 4.具体的业务逻辑代码

具体代码内容这里就不阐述了,重点是要明白代码的结构和层次关系,其次是里面主要的几个类的含义,至于代码是怎么写的并不是非常重要,仅仅是我个人观点,仅供参考,谢谢。

五、运行程序

先运行server,再运行client ,客户端向服务器端发送数据调用服务器端的4个方法,服务器端被传入客户端数据,运行效果如图所示:

    run-thirtf-code.png?psid=1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值