Apache Thrift 官方JAVA教程

Apache Thrift 官方JAVA教程

本文只是讲如何按照官方教程跑起来代码,并不会对代码细节进行介绍

配置Apache Thrift环境可以查看:Apache Thrift配置环境

这个环境仅仅用来根据thrift文件生成其他语言的代码,和开发环境无关。

官方教程的代码地址:

https://git1-us-west.apache.org/repos/asf?p=thrift.git;a=tree;f=tutorial;hb=HEAD

上面地址的文件有两种查看方式,blob和raw,blob适合在线看,raw适合复制保存。

从上面地址将最下面的shared.thrifttutorial.thrift下载到本地,然后在终端执行:

thrift -r –gen java tutorial.thrift

执行后会出现一个gen-java文件夹,里面包含两个包,每个包都有几个生成的Java文件,文件结构如下:

gen-java
    ├─shared
    │      SharedService.java
    │      SharedStruct.java
    │
    └─tutorial
            Calculator.java
            InvalidOperation.java
            Operation.java
            tutorialConstants.java
            Work.java

我在写这个例子的时候,使用了Maven,创建了3个独立的项目,项目结构如下:

Apache Thrift 官方JAVA教程_第1张图片

thrift-core是thrift生成的代码,client是客户端,server是服务端,client和server都引用了thrift-core。

thrift-core

将上面生成的gen-java中的代码放在了thrift-core项目中,该项目的pom.xml添加了一个依赖:

<dependency>
    <groupId>org.apache.thrift</groupId>
    <artifactId>libthrift</artifactId>
    <version>1.0.0</version>
</dependency>

如果你看过上一篇Apache Thrift配置环境,你就会知道我这里用的1.0.0版本还没有正式发布,所以本文最后会将所有用到的东西打包提供下载。

加上上面的依赖后,gen-java生成的代码才不会报错。

client和server

client和server代码都来自官方教程,教程地址:

http://thrift.apache.org/tutorial/java

官方源码地址:

https://git1-us-west.apache.org/repos/asf?p=thrift.git;a=tree;f=tutorial/java/src;h=d56632301e9f9ff6c4ae5a5fd0f09bbb1c481ad3;hb=HEAD

这里提供官方源码地址,主要是因为有个关键的CalculatorHandler类并没有在官方教程中直接出现。

官方教程中服务器提供了两种方式,一般方式(simple)和TSSL方式(secure)。

simple方式很简单就能运行,但是TSSL方式需要用到安全证书。

你可以看看官方教程源码,其中服务端有下面一行代码:

params.setKeyStore("../../lib/java/test/.keystore", "thrift", null, null);

这里的.keystore是私钥,"thrift"是私钥的口令。

在客户端中:

params.setTrustStore("../../lib/java/test/.truststore", "thrift", "SunX509", "JKS");

这里的.truststore是公钥,"SunX509"是公钥的口令,我们需要通过key-tool工具来生成私钥和公钥。

生成TSSL的私钥和公钥

整个使用key-tool工具的过程如下.

输入下面的命令生成私钥,这里的私钥名字是.keystore,名字可以随便写,但是整个过程都要保持名字一致:

keytool -genkeypair -alias certificatekey -keyalg RSA -validity 365 -keystore .keystore

输入上面的命令后按照提示进行操作。这里需要注意,最后一步的certificatekey的口令最好和上面的口令一致,否则可能会遇到其他问题。

输入下面的命令生成server.cer证书:

keytool -export -alias certificatekey -keystore .keystore -rfc -file server.cer

输入下面的命令生成.truststore:

keytool -import -alias certificatekey -file server.cer -keystore .truststore

上面的过程仅仅是为了生成我们需要的.keystore.truststore,更多的细节可以自己查询。

生成后将这两个文件分别放到server和client中,修改路径和密码,做好这些之后,程序就能启动了。

测试

启动JavaServer后:

Starting the simple server…
Starting the secure server…

运行JavaClient后:

ping()
1+1=2
Invalid operation: Cannot divide by 0
15-10=5
Check log: 5

此时JavaServer

ping()
add(1,1)
calculate(1, {DIVIDE,1,0})
calculate(1, {SUBTRACT,15,10})
getStruct(1)

源码下载

为了方便大家了解上面的过程和对比官方文档进行学习,本文提供源码下载。

http://pan.baidu.com/s/1qW3P320

源码使用方式,首先你要会Maven,而且还要配置好mvn,将下载的压缩文件解压后,在解压的目录中打开命令行,使用如下命令安装1.0.0版本的thrift:

mvn install:install-file -Dfile=libthrift-1.0.0.jar -DpomFile=libthrift-1.0.0.pom

安装完成后,导入3个thrift-xxx项目,先运行thrift-server,在运行thrift-client即可。

深入学习Apache Thrift

推荐阅读:Apache Thrift - 可伸缩的跨语言服务开发框架

由于有这篇文章存在,所以本文没有去讲代码的细节。

你可能感兴趣的:(apache,thrift)