创建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 ...");
    }
}

 

posted @ 2015-04-13 16:18  贺瑞斯  阅读(1517)  评论(0编辑  收藏  举报