Thrift 之 安装与测试

Thrift是跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目

最新版本:0.9.2由于需要运行在Java 1.7 所以使用了0.8.0版本 下载地址如下:http://archive.apache.org/dist/thrift/0.8.0/

在linux上安装如下:

    1 执行tar xvf thrift-0.8.0.tar.gz

    2 cd thrift-0.8.0

    3 执行:./configure & make

    4 执行:make install


在thrift-0.8.0同级目录下创建:thrift文件夹

     1 cd thrift

      2 生成Hello.thrift

namespace java cdv
service Hello{
  string helloString(1:string para)
  i32 helloInt(1:i32 para)
  bool helloBollean(1:bool para)
  void helloVoid()
}

   3 执行:thrift -gen java  Hello.thrift

      在同级目录中生成 gen-java目录,在该目录下生成cdv/Hello.class文件


在Eclipse中引入:

1  cdv/Hello.class文件

2  进入:thrift-0.8.0/lib/java目录,执行:ant   命令进行打包在build目录下生成:libthrift-0.8.0.jar

3 eclipse中引入libthrift-0.8.0.jar  slf4j-log4j12-1.5.8.jar  slf4j-api-1.5.8.jar  log4j-1.2.14.jar

4 即可在Eclipse中开发Server 和 Client端代码

   

Server端:


1 实现Hello.Iface接口

package com.cdv.hello;

import org.apache.thrift.TException;


import cdv.Hello.Iface;


public class HelloServerImpl implements Iface {

@Override
public String helloString(String para) throws TException {
// TODO Auto-generated method stub
System.out.println(para);
return para;
}

@Override
public int helloInt(int para) throws TException {
// TODO Auto-generated method stub
System.out.println(String.valueOf(para));
return 1;
}

@Override
public boolean helloBollean(boolean para) throws TException {
// TODO Auto-generated method stub
System.out.println(String.valueOf(para));
return false;
}

@Override
public void helloVoid() throws TException {
// TODO Auto-generated method stub
System.out.println("空值");
}


}


2 接受客户端请求

package com.cdv.hello;

import org.apache.thrift.TProcessor;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TThreadPoolServer;
import org.apache.thrift.server.TThreadPoolServer.Args;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;


import cdv.Hello;

public class ServerThread implements Runnable {

@Override
public void run() {
// TODO Auto-generated method stub
while( true ){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}

try { 
           // 设置服务端口为 7911 
           TServerSocket serverTransport = new TServerSocket(7911); 
           // 关联处理器与 Hello 服务的实现
           TProcessor processor = new Hello.Processor<HelloServerImpl>(new HelloServerImpl()); 
           
           TServer server = new TThreadPoolServer(new Args(serverTransport).processor(processor)); 
           System.out.println("Start server on port 7911..."); 
           server.serve(); 
       } catch (TTransportException e) { 
           e.printStackTrace(); 
       } 

}


}


}


3 创建服务端线程

package com.cdv.hello;


public class HelloServiceServer {


public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub

Thread _thread = new Thread(new ServerThread()) ;
_thread.start();

}

}


客户端代码:


package com.org;

import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TTransportException;


import cdv.Hello;


public class Client {

public static void main( String[] args ) { 
        try { 
            // 设置调用的服务地址为本地,端口为 7911 
            TTransport transport = new TSocket("localhost", 7911); 
            transport.open(); 
            // 设置传输协议为 TBinaryProtocol 
            TProtocol protocol = new TBinaryProtocol(transport); 
            Hello.Client client = new Hello.Client(protocol); 
            // 调用服务的 helloVoid 方法
            client.helloVoid(); 
            System.out.println(client.helloInt(28)) ;
            System.out.println(client.helloBollean(true)) ;
            System.out.println(client.helloString("测试")) ;
            client.send_helloString("测试0101");
            transport.close(); 
            
        } catch (TTransportException e) { 
            e.printStackTrace(); 
        } catch (TException e) { 
            e.printStackTrace(); 
        } 
    } 

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值