`

thrift 学习

 
阅读更多
创建Thrift文件
Thrift文件与编程语言无关,用于定义数据类型和服务接口,然后生成用来构建RPC客户和服务器所需的全部代码。
1.1 编写testJava.thrift

#!/usr/local/bin/thrift --gen java

namespace java Test

service Something {
    i32 ping()
}


1.2 运行thrift编译器,生成项目源文件
在linux命令行下输入:Thrift –gen java testJava.thrift
生成的源文件在./gen-java/目录下。
创建Java服务器
进入./gen-java目录,确保系统的CLASSPATH设置正确。libthrift.jar,,slf4j-api和slf4j-simple这几个包都需要包含在CLASSPATH里。
1.3 编写SomethingImpl.java

package Test;

import org.apache.thrift.TException;

class SomethingImpl implements Something.Iface {
 public SomethingImpl() {}
 public int ping() throws TException {
     System.out.println( "Recieve ping from client..." );
     return 0;
}
}


1.4 创建Server.java

package Test;

import java.io.IOException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TBinaryProtocol.Factory;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TThreadPoolServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;

public class Server {
private void start() {
try {
TServerSocket serverTransport = new TServerSocket(7911);
    Something.Processor processor = new Something.Processor(new SomethingImpl());
    Factory protFactory = new TBinaryProtocol.Factory(true, true);
    TServer server = new TThreadPoolServer(processor, serverTransport, protFactory);
    System.out.println("Starting server on port 7911 ...");
    server.serve();
    
   } catch (TTransportException e) { 
    e.printStackTrace();
   } catch (Exception e) {
    e.printStackTrace();
}
}

public static void main(String args[]) {
    Server srv = new Server();
    srv.start();
}   
}


创建Java客户端
创建Client.java

package Test;

import java.io.IOException;
import org.apache.thrift.*;
import org.apache.thrift.protocol.*;
import org.apache.thrift.transport.*;

public class Client {
      public static void main(String [] args) {
           try {
                    TTransport transport = new TSocket("localhost", 7911);
                    TProtocol protocol = new TBinaryProtocol(transport);
                    Something.Client client = new Something.Client(protocol);
                    transport.open();
                    System.out.println("Client calls ping()");
                    client.ping();
                    transport.close();
               } catch (TException x) {
                    x.printStackTrace();
               }   
        }   
} 


编译及运行
1.5 编译
在linux命令行下输入:javac *.java,生成客户端与服务器端的class文件。
1.6 运行
首先启动服务器。退到gen-java目录,输入java Test/Server,屏幕显示如下:
Starting server on port 7911 ...
然后启动客户端。在同一目录下输入java Test/Client,屏幕显示如下:
Client calls ping()
这时服务器端的输出多了一行:
Recieve ping from client...
分享到:
评论

相关推荐

    THRIFT 学习资料

    "THRIFT 学习资料" 压缩包可能包含 THRIFT 的教程、示例代码、最佳实践等,对于初学者来说是非常宝贵的资源。通过学习这些资料,你可以深入理解 THRIFT 的工作原理,掌握如何定义服务、如何生成和使用生成的代码,...

    Thrift学习

    Thrift是一种开源的跨语言...学习和掌握Thrift,对于提升大型分布式系统的设计和开发能力大有裨益。通过阅读Thrift的源码,我们可以深入了解其工作原理,为自己的项目选择合适的实现方式,或者根据需要进行定制化开发。

    Thrift框架使用分享

    Apache Thrift是由Facebook开发并开源的远程服务调用框架,它能够实现高效的跨语言服务开发和通信。Thrift框架通过接口描述语言(IDL)来定义服务,支持多种编程语言,如C++, Java, Python, PHP, Ruby, Erlang, Perl...

    thrift学习资料

    apache thift 学习资料

    Thrift-java学习小结

    本文将基于Thrift的Java实现,总结学习过程中的一些关键知识点,旨在帮助理解Thrift的工作原理以及如何在Java环境中应用。 一、Thrift简介 Thrift是一种远程过程调用(RPC)框架,它通过定义一种中间描述文件(....

    thrift入门学习教程

    ### Thrift入门学习教程 #### 一、Thrift概述 Thrift是由Facebook开发并在2007年贡献给Apache基金会的一款开源项目。它的主要目的是解决跨平台、跨语言的系统间大数据量传输通信问题。在早期,Facebook面临着系统...

    基于Java语言的Thrift框架设计源码学习与实践指南

    本项目为基于Java语言的Thrift框架设计源码学习与实践指南,包含52个文件,其中Java源文件30个,属性文件4个,Git忽略文件3个,XML文件3个,Thrift文件3个,JAR包文件2个,CMD脚本2个,...主要涉及Thrift学习与实践。

    thrift jar包及相关学习步骤

    标题“thrift jar包及相关学习步骤”意味着我们将探讨Thrift在Java环境中的应用,以及如何使用Thrift的jar包进行服务开发。Thrift的jar包通常包含编译器、运行时库和相关的工具,这些都对理解和使用Thrift至关重要。...

    thrift实现http协议案例

    Thrift是一种高效的、跨语言的服务框架,最初由Facebook开发,现在是Apache的顶级...通过学习和理解这个案例,开发者可以更好地理解和应用Thrift在分布式系统中的角色,以及如何扩展其通信能力以适应不同的网络环境。

    Thrift The Missing Guide

    由于Facebook开源的RPC协议Thrift学习资料过少,导致一些同学对于Thrift的底层原理和使用方法不甚了解,Thrift The Missing Guide,是很好的一个入门材料,值得参考。

    thrift样例操作实例

    在学习这个实例时,你需要理解Thrift的IDL语法,如何使用Thrift编译器生成代码,以及如何在Java环境中集成和使用Thrift库。此外,你还需要了解如何配置和运行Thrift服务以及客户端,这通常涉及到网络通信、序列化和...

    thrift-Demo

    Thrift是一种开源的跨语言服务开发框架...通过这个示例,你可以学习到Thrift的基本使用,包括服务定义、编译、服务端和客户端的实现,以及如何进行跨语言通信。这对于理解和应用Thrift来构建分布式系统是非常有帮助的。

    Windows下QT使用Thrift的样例

    通过学习和分析这个样例,开发者可以快速掌握在Windows环境下使用QT、Thrift和Boost进行服务开发的方法。 总之,这个样例项目提供了一个很好的起点,帮助开发者了解如何在Windows上用QT与Thrift协同工作,同时利用...

    thrift-delphi实例

    Thrift Delphi实例详解 Thrift,全称为“Transportation Layer ...总之,Thrift Delphi实例是一个极好的学习资源,它揭示了跨语言服务通信的核心原理,帮助开发者快速上手Thrift,构建高效、可扩展的分布式系统。

    zk+thrift demo

    【描述】"供大家使用" 表明这个 demo 是为了提供给开发者们参考和学习,帮助他们理解如何在自己的项目中运用 ZooKeeper 和 Thrift,实现服务间的通信和管理。 【标签】"thrift" 指出核心关注点是 Thrift 技术。...

    thrift开源项目研究

    《Thrift开源项目研究》 Thrift是一种高性能的跨语言服务框架,由Facebook于2007年开发并开源,现已成为Apache软件基金会的顶级项目。...通过学习和理解Thrift,开发者能够更好地应对复杂的分布式系统挑战。

    thrift包及其源码

    总结,这个“thrift包及其源码”为学习和使用Thrift提供了一个良好的起点,通过阅读源码,我们可以深入理解其设计原理,提高自己的分布式服务开发能力。对于开发者来说,这是一份宝贵的资源,有助于提升对跨语言通信...

    thrift-0.9.2.exe

    Thrift 是一个开源的跨语言服务开发框架,由Facebook于2007年设计并开源,后来成为Apache软件...在实际项目中,我们可以结合这个压缩包来学习如何设置Thrift服务,编写客户端和服务器端代码,以及如何进行通信测试。

    Thrift 示例代码_Java

    总之,Thrift 示例代码 Java 版本提供了一个直观的学习平台,帮助开发者了解如何使用 Thrift 构建分布式服务,从而提升系统间的通信效率和开发效率。通过实践和理解这个示例,开发者能够更好地掌握 Thrift 的工作...

Global site tag (gtag.js) - Google Analytics