zoukankan      html  css  js  c++  java
  • Thrift java服务器与客户端示例 john c 博客园

    Thrift java服务器与客户端示例 - john c - 博客园

    Thrift java服务器与客户端示例

    Posted on 2011-06-19 03:04 john c 阅读(3540) 评论(0) 编辑 收藏

    简单的实现一个PING的功能

    1.安装thrift

    http://thrift.apache.org/download/

    人人网镜像下载:

    http://labs.renren.com/apache-mirror/thrift/0.6.1/thrift-0.6.1.exe

    2.编写Thrift文件(定义接口,结构,异常等),保存为test.thrift

    namespace java net.johnc.thrift
    service Test{
     
     void ping(1: i32 length)
     
    }

    3.生成接口代码

    把thrift-0.6.1.exe和test.thrift文件放在同一个目录,当然也可以把thrift-0.6.1.exe文件放进环境变量

    进入DOS命令执行:thrift-0.6.1.exe --gen java test.thrift

    生成文件 gen-java/net/johnc/thrift/Test.java

    4.编写服务端接口实现类

    在POM.xml文件加入以下依赖:

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

      把生成的Test.java复制到项目下

    复制代码
    1 package net.johnc.thrift; 2 3  import org.apache.thrift.TException; 4 5  public class TestImpl implements Test.Iface { 6 7 public void ping(int length) throws TException { 8 System.out.println("calling ping ,length=" + length); 9 } 10 11 }
    复制代码

    5.编写启动服务代码

    复制代码
    1 package net.johnc.thrift; 2 3  import net.johnc.thrift.Test.Processor; 4 5  import org.apache.thrift.protocol.TBinaryProtocol; 6  import org.apache.thrift.protocol.TBinaryProtocol.Factory; 7  import org.apache.thrift.server.TServer; 8  import org.apache.thrift.server.TThreadPoolServer; 9  import org.apache.thrift.server.TThreadPoolServer.Args; 10  import org.apache.thrift.transport.TServerSocket; 11  import org.apache.thrift.transport.TTransportException; 12 13  public class Server { 14 public void startServer() { 15 try { 16 17 TServerSocket serverTransport = new TServerSocket(1234); 18 19 Test.Processor process = new Processor(new TestImpl()); 20 21 Factory portFactory = new TBinaryProtocol.Factory(true, true); 22 23 Args args = new Args(serverTransport); 24 args.processor(process); 25 args.protocolFactory(portFactory); 26 27 TServer server = new TThreadPoolServer(args); 28 server.serve(); 29 } catch (TTransportException e) { 30 e.printStackTrace(); 31 } 32 } 33 34 public static void main(String[] args) { 35 Server server = new Server(); 36 server.startServer(); 37 } 38 }
    复制代码

    6.编写客户端代码

    复制代码
    1 package net.johnc.thrift; 2 3  import org.apache.thrift.TException; 4  import org.apache.thrift.protocol.TBinaryProtocol; 5  import org.apache.thrift.protocol.TProtocol; 6  import org.apache.thrift.transport.TSocket; 7  import org.apache.thrift.transport.TTransport; 8  import org.apache.thrift.transport.TTransportException; 9 10  public class Client { 11 12 public void startClient() { 13 TTransport transport; 14 try { 15 transport = new TSocket("localhost", 1234); 16 TProtocol protocol = new TBinaryProtocol(transport); 17 Test.Client client = new Test.Client(protocol); 18 transport.open(); 19 client.ping(2012); 20 transport.close(); 21 } catch (TTransportException e) { 22 e.printStackTrace(); 23 } catch (TException e) { 24 e.printStackTrace(); 25 } 26 } 27 28 public static void main(String[] args) { 29 Client client = new Client(); 30 client.startClient(); 31 } 32 }
  • 相关阅读:
    突然想谈谈——我的软件测试入门
    js+rem动态计算font-size的大小,适配各种手机设备!
    iOS 如何打测试包,直接给测试人员使用(绝对的新手入门)
    去掉无用的多余的空格(string1.前后空格,2.中间空格)
    iOS 自定义键盘ToolBar(与键盘的弹出、收起保持一致)
    iOS上线...踩坑
    iOS10 导航条,这个二狗子变了...踩坑
    ios程序发布测试打包
    获取毫秒级时间戳
    弹簧动画效果(系统自带方法)
  • 原文地址:https://www.cnblogs.com/lexus/p/2778257.html
Copyright © 2011-2022 走看看