zoukankan      html  css  js  c++  java
  • 创建Thrift Server和Thrift Client

    1、创建Server

    package cn.horace.thrift.server;
    
    import cn.horace.thrift.idl.IUserService;
    import cn.horace.thrift.rpc.IUserServiceImpl;
    import org.apache.thrift.protocol.TBinaryProtocol;
    import org.apache.thrift.protocol.TProtocolFactory;
    import org.apache.thrift.server.TServer;
    import org.apache.thrift.server.TThreadPoolServer;
    import org.apache.thrift.transport.*;
    
    import java.io.IOException;
    
    /**
     * Created by Horace on 15-4-10下午9:00.
     */
    public class SimpleServer
    {
        public static void main(String[] args) throws TTransportException, IOException
        {
            // 创建处理器
            IUserService.Processor<IUserServiceImpl> processor = new IUserService.Processor<IUserServiceImpl>(new IUserServiceImpl());
    
            // 创建传输对象
            TServerTransport serverTransport = new TServerSocket(9090);
    
            // 创建传输工厂,非阻塞
            TTransportFactory transportFactory = new TFramedTransport.Factory();
    
            // 创建协议工厂
            TProtocolFactory protocolFactory = new TBinaryProtocol.Factory();
    
            // 设置服务器参数
            TThreadPoolServer.Args serverArgs = new TThreadPoolServer.Args(serverTransport);
    
            // 设置处理器
            serverArgs.processor(processor);
    
            // 设置使用的协议
            serverArgs.protocolFactory(protocolFactory);
    
            // 设置使用的传输对象
            serverArgs.transportFactory(transportFactory);
    
            // 创建服务器
            TServer server = new TThreadPoolServer(serverArgs);
    
            System.out.println("Starting the simple server...");
            server.serve();
        }
    }

    2、创建客户端

    package cn.horace.thrift.client;
    
    import cn.horace.thrift.idl.IUserService;
    import org.apache.thrift.TException;
    import org.apache.thrift.protocol.TBinaryProtocol;
    import org.apache.thrift.protocol.TProtocol;
    import org.apache.thrift.transport.TFramedTransport;
    import org.apache.thrift.transport.TSocket;
    import org.apache.thrift.transport.TTransport;
    
    /**
     * Created by Horace on 15-4-10下午9:00.
     */
    public class SimpleClient
    {
        public static void main(String[] args) throws TException, InterruptedException
        {
            // 创建传输对象
            TSocket baseTransport = new TSocket("127.0.0.1", 9090);
    
            // 创建传输对象,非阻塞式
            TTransport transport = new TFramedTransport.Factory().getTransport(baseTransport);
    
            // 打开连接通道
            transport.open();
    
            // 创建协议对象
            TProtocol protocol = new TBinaryProtocol(transport);
    
            // 创建客户端对象
            IUserService.Client client = new IUserService.Client(protocol);
    
            client.findAll();
    
            transport.close();
    
            System.out.println("findAll ...");
        }
    }
  • 相关阅读:
    ES6 对Math对象的扩展
    ES6 对Number的扩展
    monolog 应该是世界上最好的日志插件了
    ES6 解构赋值的常见用途,很强大
    ES6 对象的解构赋值
    ES6 数组的解构赋值
    ES6 const
    laravel相关插件
    c++ 库 boost安装
    Eclipse ftp插件
  • 原文地址:https://www.cnblogs.com/horace/p/4422489.html
Copyright © 2011-2022 走看看