thrift java first demo

参考文档:http://thrift.apache.org/

1.下载需要的文件

地址:http://thrift.apache.org/download  需要下载 

2. 下载.thrift文件

  • shared.thrift: https://github.com/apache/thrift/blob/master/tutorial/shared.thrift  
  • tutorial.thrift: https://github.com/apache/thrift/blob/master/tutorial/tutorial.thrift

3. 生成.java文件

进入thrift-0.12.0.exe所在目录,输入命令:

1
thrift -r --gen java tutorial.thrift

产生文件夹 gen-Java文件夹,里面包含两个文件夹shared和tutorial。将文件夹移动至我们工程的src/main/java目录下。

4. 新建Maven工程,dependency里增加

1
2
3
4
5
<dependency>
  <groupId>org.apache.thrift</groupId>
  <artifactId>libthrift</artifactId>
  <version>0.12.0</version>
</dependency>

5. client & server & CalculatorHandler

文件内容来自:http://thrift.apache.org/tutorial/java

将JavaClient.java和JavaServer.java放在src/main/java下。此时目录结构如下:

6. 运行JavaServer的main函数

报错:

1
2
3
4
5
6
7
8
9
10
11
Starting the simple server...
org.apache.thrift.transport.TTransportException: Error creating the transport
    at org.apache.thrift.transport.TSSLTransportFactory.createSSLContext(TSSLTransportFactory.java:)
    at org.apache.thrift.transport.TSSLTransportFactory.getServerSocket(TSSLTransportFactory.java:)
    at server.JavaServer.secure(JavaServer.java:)
    at server.JavaServer$.run(JavaServer.java:)
    at java.lang.Thread.run(Thread.java:)
Caused by: java.io.IOException: Could not load file: ../../lib/java/test/.keystore
    at org.apache.thrift.transport.TSSLTransportFactory.getStoreAsStream(TSSLTransportFactory.java:)
    at org.apache.thrift.transport.TSSLTransportFactory.createSSLContext(TSSLTransportFactory.java:)
    ...  more

  原因是secure模式需要有密钥,代码里需将名为.keystore的密钥放在../../lib/java/test目录下。如果使用simple模式,则不需要。于是,我修改了JavaServer.java代码,将new Thread(secure).start(); 注释掉了,再次启动,未报错。

7. 运行JavaClient的main函数

指明使用simple模式运行。

8. 运行结果

客户端:

1
2
3
4
5
6
7
ping()
1+1=2
Invalid operation: Cannot divide by 0
15-10=5
Check log: 5
 
Process finished with exit code 0

服务端:

1
2
3
4
5
6
Starting the simple server...
ping()
add(1,1)
calculate(1, {DIVIDE,1,0})
calculate(1, {SUBTRACT,15,10})
getStruct(1)

  

 

posted @   myLittleGarden  阅读(325)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示