zoukankan      html  css  js  c++  java
  • 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所在目录,输入命令:

    thrift -r --gen java tutorial.thrift
    

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

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

    <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函数

    报错:

     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. 运行结果

    客户端:

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

    服务端:

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

      

  • 相关阅读:
    1022-哈夫曼编码与译码
    openresty 学习笔记二:获取请求数据
    openresty 学习笔记一:环境安装
    Lua在Windows下的安装、配置、运行
    Django框架中logging的使用
    死磕nginx系列--使用upsync模块实现负载均衡
    死磕nginx系列--nginx 限流配置
    死磕nginx系列--使用nginx做cache服务
    死磕nginx系列--使用nginx做负载均衡
    死磕nginx系列--nginx服务器做web服务器
  • 原文地址:https://www.cnblogs.com/sunada2005/p/10981454.html
Copyright © 2011-2022 走看看