1.thrift的Hello World

thrift简介:

thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。

thrift允许定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。

windows 环境下thrift 的安装:

1. 到thrift官网下载相应的exe文件

2. 将其放到某个目录下,重命名为thrift.exe

3. 将该目录添加到path环境变量中

4. 在命令行下运行命令 thrift  -version,如果出现"Thrift version xx.xx.xx",说明安装成功。

thrift的基本用法:

thrift --gen language Thrift filename

其中language是要生成的代码的编程语言,Thrift filename为依据的thrift文件。

thrift的Hello World程序:

0. 依赖的jar包:

libthrift-0.9.1.jar

log4j.jar

slf4j-api.jar

slf4j-log4j12.jar

1. 生成一个HelloWorld.thrift文件,内容如下:

namespace java com.zhang.thrift.server  //定义命名空间

service HelloWorldService {  //定义服务类

string helloWorld()  //定义服务的方法

}

其中的“java” 为要生成的代码语言(我不明白为什么一定要有这个东西,thrift命令的参数有了生成的代码语言)。

在该thrift文件所在的目录下运行命令   thrift --gen  java HelloWorld.thrift

就会在该目录下生成一个gen-java的文件夹,其中有一个类com.zhang.thrift.server.HelloWorldService

2. 新建一个类实现com.zhang.thrift.server.HelloWorldService.Iface接口

public class HelloWorldServiceImpl implements HelloWorldService.Iface{
    @Override
    public String helloWorld() throws TException {
        return "Hello World!";
    }
}

3. 创建一个类,作为服务器端

package com.zhang.thrift.server.java;

import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TServer.Args;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TSSLTransportFactory;
import org.apache.thrift.transport.TSSLTransportFactory.TSSLTransportParameters;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TServerTransport;

import com.zhang.thrift.server.HelloWorldService;
import com.zhang.thrift.server.impl.HelloWorldServiceImpl;

public class JavaServer {

	public static HelloWorldServiceImpl helloWorldServiceImpl;

	public static HelloWorldService.Processor processor;

	public static void main(String[] args) {
		try {
			helloWorldServiceImpl = new HelloWorldServiceImpl();
			processor = new HelloWorldService.Processor(helloWorldServiceImpl);

			Runnable simple = new Runnable() {
				public void run() {
					simple(processor);
				}
			};

//			Runnable secure = new Runnable() {
//				public void run() {
//					secure(processor);
//				}
//			};

			new Thread(simple).start();
//			new Thread(secure).start();

		} catch (Exception x) {
			x.printStackTrace();
		}
	}

	public static void simple(HelloWorldService.Processor processor) {
		try {
			TServerTransport serverTransport = new TServerSocket(8080);
			TServer server = new TSimpleServer(
					new Args(serverTransport).processor(processor));

			// Use this for a multithreaded server
			// TServer server = new TThreadPoolServer(new
			// TThreadPoolServer.Args(serverTransport).processor(processor));

			System.out.println("Starting the simple server...");
			server.serve();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

4. 创建一个类,作为客户端,对服务进行调用测试。

package com.zhang.thrift.server.java;

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 com.zhang.thrift.server.HelloWorldService;

public class JavaSimpleClient {

	public static void main(String[] args) {
		try {
			TTransport transport;

			transport = new TSocket("localhost", 8080);
			transport.open();

			TProtocol protocol = new TBinaryProtocol(transport);
			HelloWorldService.Client client = new HelloWorldService.Client(protocol);

			perform(client);

			transport.close();
		} catch (TException x) {
			x.printStackTrace();
		}
	}

	private static void perform(HelloWorldService.Client client) throws TException {
		String result = client.helloWorld();
		System.out.println(result);
	}
}
时间: 2024-08-03 06:57:47

1.thrift的Hello World的相关文章

Thrift使用实例

首先下载thrift.exe,和对应lib包.注意版本一定要一致. 否则编译会不识别出现错误. 可能会出现org.slf4j这个错误,那么你要把slf4j-api.jar下载下来引入到你的project中 namespace java com.nerd.thrift.service /** * */ service sayThriftService{ void say(); } 通过在命令行中转到 thrift-1.8.0.exe -gen java  sayThriftService 在磁盘目

thrift

基本类型 bool :布尔类型( true or value),占一个字节 byte:有符号字节 i16:16位有符号整型 i32:32位有符号整型 i64:64位有符号整型 double :64位浮点数 string:未知编码或者二进制的字符串 注意,thrift不支持无符号整型,因为很多目标语言不存在无符号整型(如java). 支持的传输格式 * TBinaryProtocol : 二进制编码格式进行数据传输.    * TCompactProtocol : 这种协议非常有效的,使用Vari

Openresty使用Thrift安装步骤

最新想用Golang与Openresty相互通讯调用,使用RPC协议来实现,后来研究最终选择了Thrift:主要还是FB实现了支持Lua和Go模块,直接编译就可以成功嵌套使用,非常方便:研究了两天最后编译成功,于是便把使用步骤做下记录. 1.Mac安装Thrift brew install thrift 2.Apache官网地址Thrift0.10下载地址 或者 git clone https://git-wip-us.apache.org/repos/asf/thrift.git thrift

thrift总结

定义: Apache Thrift是一个facebook建立的RPC框架,现在是一个Apache的顶级项目.Thrift允许通过一个跨语言的定义文件的方式定义数据类型和服务接口,[这个文件]作为[RPC]客户端和服务器通信的标准 thrift安装: ①安装依赖:$ yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-dev

Thrift CentOS安装和使用

Thrift是Apache的一个开源的跨语言服务开发框架,它提供了一个代码生成引擎来构建服务,支持C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript,Node.js,Smalltalk,OCaml,Delphi等多种编程语言. 一般来说,使用Thrift来开发应用程序,主要建立在两种场景下: 第一,在我们开发过程中,一个比较大的项目需要多个团队进行协作,而每个团队的成员在编程技术方面的技能可能不一定相同,为了实现这种跨

基于Thrift的跨语言、高可用、高性能、轻量级的RPC框架

功能介绍 跨语言通信 方便的使Java.Python.C++三种程序可以相互通信 负载均衡和容灾处理 方便的实现任务的分布式处理 支持服务的水平扩展,自动发现新的服务节点 能够兼容各种异常情况,如节点的异常down机 可视化管理 通过服务管理系统可以方便查看服务状态和统计信息 与原生thrift通信 支持与原生thrift服务进行通信 与业内方案的对比 与thrift.avro.hessian相比,harpc支持了高可用,并且更加易用 与dubbo相比,harpc支持了跨语言,并且更轻量级 与i

EJB、RMI、XMLRPC、Hessian、Thrift 、Protobuf

Java中实现分布式的方式有:EJB.RMI.XMLRPC.Web Service.Hessian.Thrift .Protobuf.NIO(Netty.Mina) EJB 优势:可扩展性好,安全性强,支持分布式事务处理. 劣势:不能跨语言:配置相对复杂,不同J2EE容器之间很难做无缝迁移. RMI 优势:面向对象的远程服务模型:基于TCP协议上的服务,执行速度快. 劣势:不能跨语言:每个远程对象都要绑定端口,不易维护:不支持分布式事务JTA,RMI框架对于安全性.事务.可扩展性的支持非常有限.

RPC框架之Thrift

目前流行的服务调用方式有很多种,例如基于SOAP消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等.其中所用到的数据传输方式包括 XML,JSON 等,然而 XML 相对体积太大,传输效率低,JSON 体积较小,新颖,但还不够完善. 本文将介绍由 Facebook 开发的远程服务调用框架 Apache Thrift,它采用接口描述语言定义并创建服务,支持可扩展的跨语言服务开发,所包含的代码生成引擎可以在多种语言中,如 C++, Java, Python, PH

Thrift实现C#调用Java开发步骤详解

转载请注明出处:jiq?钦's technical Blog Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的远程服务调用的框架. 类似的跨语言RPC框架还有ICE.Hessian.Protocol Buffer.Avro等. 1 下载Thrift 下载地址:http://thrift.apache.org/download thrift-0.9.3.exe         用于编译Thrift中间文件生成对应语言代码的工具 thrift-0.9.3.tar

使用Thrift RPC编写程序(服务端和客户端)

1. Thrift类介绍 Thrift代码包(位于thrift-0.6.1/lib/cpp/src)有以下几个目录: concurrency:并发和时钟管理方面的库processor:Processor相关类protocal:Protocal相关类transport:transport相关类server:server相关类 1.1 Transport类(how is transmitted?)负责数据传输,有以下几个可用类:TFileTransport:文件(日志)传输类,允许client将文件