1.使用windows实现,首先在apache官网下载一个thrift的编译工具,在项目中建一个文件叫add.thrift的文件,内容如下:

namespace java com.vipshop.sample.server

service AdditionService{
i32 add(1:i32 n1,2:i32 n2)
}

使用下载的thrift工具进行编译,命令如下thrift --gen java add.thrift(本人使用的是java实现)  编译后会生成一个叫AdditionService.java 的文件

2 把这个文件添加到项目中(需要的jar包有两个,一个是thrift的jar包,要自己去生成,一个是slf4j  jar包),目录结构如下:

3 新建一个名叫AdditionServiceHandle的java文件,来实现我们在AdditionService中所需要实现的方法

import org.apache.thrift.TException;

public class AdditionServiceHandle implements AdditionService.Iface{

    @Override
public int add(int n1, int n2) throws TException {
// TODO Auto-generated method stub
return n1+n2;
} }

4 编写服务端,代码如下

import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TServerTransport; public class MyServer { public static void startsImpleServer(AdditionService.Processor<AdditionServiceHandle> processor){
try
{
TServerTransport serverTransport=new TServerSocket(9090);
TServer server=new TSimpleServer(new TServer.Args(serverTransport).processor(processor)); System.out.println("starting the simple server....");
server.serve();
}
catch (Exception e)
{
// TODO: handle exception
}
} public static void main(String[] args) {
startsImpleServer(new AdditionService.Processor<AdditionServiceHandle>(new AdditionServiceHandle()));
} }

5 编写客户端

import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport; public class AdditionClient {
public static void main(String[] args) {
try
{
TTransport transport;
transport=new TSocket("localhost",9090);
transport.open(); TProtocol protocol=new TBinaryProtocol(transport);
AdditionService.Client client=new AdditionService.Client(protocol);
System.out.println(client.add(100, 200));
transport.close();
}
catch (Exception e)
{
// TODO: handle exception
}
}
}

6运行服务器端和客户端,结果客户端为300

thrift的简单实现的更多相关文章

  1. Apache Thrift的简单使用

    Apache Thrift的简单使用 ---------------------- 1. 简介 Thrift是Facebook的一个开源项目,主要是一个跨语言的服务开发框架.它有一个代码生成器来对它所 ...

  2. Apache Thrift的简单介绍

    1.什么是Thrift thrift是一种可伸缩的跨语言服务的发展软件框架.它结合了功能强大的软件堆栈的代码生成引擎,以建设服务.不同开发语言开发的服务可以通过该框架实现通信. thrift是face ...

  3. Thrift简单实践

    0.什么是RPC RPC(Remote Procedure Call - 远程过程调用),是通过网络从远程计算机上请求服务,而不需要了解底层网路技术的细节.简单点说,就是像调用本地服务(方法)一样调用 ...

  4. Thrift的安装和简单演示样例

    本文仅仅是简单的解说Thrift开源框架的安装和简单使用演示样例.对于具体的解说,后面在进行阐述. Thrift简述                                           ...

  5. thrift简单示例 (go语言)

    这个thrift的简单示例来自于官网 (http://thrift.apache.org/tutorial/go), 因为官方提供的例子简单易懂, 所以没有必要额外考虑新的例子. 关于安装的教程, 可 ...

  6. thrift简单示例 (基于C++)

    这个thrift的简单示例, 来源于官网 (http://thrift.apache.org/tutorial/cpp), 因为我觉得官网的例子已经很简单了, 所以没有写新的示例, 关于安装的教程, ...

  7. python thrift 服务端与客户端使用

    一.简介 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, ...

  8. node(thrift)

    thrift是一种跨语言的RPC框架,据说uber采在node.js项目中采用thrfit后,比原有的http+json的方式提高近20倍的性能. 所谓的RPC本质上就是客户端将需要调用的方法名和参数 ...

  9. Apache Thrift - 可伸缩的跨语言服务开发框架

    To put it simply, Apache Thrift is a binary communication protocol 原文地址:http://www.ibm.com/developer ...

随机推荐

  1. HBase Compact

    Region Compact请求是在Region MemStore Flush之后被触发的: boolean shouldCompact = region.flushcache(); // We ju ...

  2. where T:class 泛型类型约束

    对于一个定义泛型类型为参数的函数,如果调用时传入的对象为T对象或者为T的子类,在函数体内部如果需要使用T的属性的方法时,我们可以给这个泛型增加约束: 类的定义 public class Product ...

  3. Struts2初学习记录

    以下笔记内容来自尚硅谷_Struts2_佟刚老师的视频教程+自己一点点整理 来源免责声明 一. 1. VS 自实现: 1). 搭建 Struts2 的开发环境 2). 不需要显式的定义 Filter, ...

  4. java排序算法-交换排序

    public class ExchangeSortUtils { // 冒泡 public static void bubbleSort(int[] array) { int length = arr ...

  5. SCOPE 中 SPFILE、MEMORY、BOTH 的小小区别

    ALTER SYSTEM 中 SCOPE=SPFILE/MEMORY/BOTH 的区别: SCOPE = SPFILE The change is applied in theserverparame ...

  6. windows下的类似grep命令findstr

    windows下的类似grep命令findstr findstr后面跟的字符串不能加引号 C:\Users\Administrator>netstat -an|findstr 10.1.151 ...

  7. javascript动态改变当前页面中元素的状态行为

    function Datea() { var timed = document.getElementById('timed'); var t = setInterval(function TDate( ...

  8. Resizable 2th click not working

    here's a simple solution.  just destroy the resizable function, then rebuild it. try { $("#div& ...

  9. 集群中几种session同步解决方案的比较

    1. 客户端cookie加密 .比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现. 问题:session中数据不能太多,最好只有个用户id. Sessi ...

  10. FineUI初学手册

    女朋友鄙视我原创少... 1.下载 进入官方论坛:http://www.fineui.com/bbs/ 要用到下载源代码和空项目下载 http://fineui.codeplex.com/ http: ...