创建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的源码,我们可以深入了解其工作原理,为自己的项目选择合适的实现方式,或者根据需要进行定制化开发。
Apache Thrift是由Facebook开发并开源的远程服务调用框架,它能够实现高效的跨语言服务开发和通信。Thrift框架通过接口描述语言(IDL)来定义服务,支持多种编程语言,如C++, Java, Python, PHP, Ruby, Erlang, Perl...
apache thift 学习资料
本文将基于Thrift的Java实现,总结学习过程中的一些关键知识点,旨在帮助理解Thrift的工作原理以及如何在Java环境中应用。 一、Thrift简介 Thrift是一种远程过程调用(RPC)框架,它通过定义一种中间描述文件(....
### Thrift入门学习教程 #### 一、Thrift概述 Thrift是由Facebook开发并在2007年贡献给Apache基金会的一款开源项目。它的主要目的是解决跨平台、跨语言的系统间大数据量传输通信问题。在早期,Facebook面临着系统...
本项目为基于Java语言的Thrift框架设计源码学习与实践指南,包含52个文件,其中Java源文件30个,属性文件4个,Git忽略文件3个,XML文件3个,Thrift文件3个,JAR包文件2个,CMD脚本2个,...主要涉及Thrift学习与实践。
标题“thrift jar包及相关学习步骤”意味着我们将探讨Thrift在Java环境中的应用,以及如何使用Thrift的jar包进行服务开发。Thrift的jar包通常包含编译器、运行时库和相关的工具,这些都对理解和使用Thrift至关重要。...
Thrift是一种高效的、跨语言的服务框架,最初由Facebook开发,现在是Apache的顶级...通过学习和理解这个案例,开发者可以更好地理解和应用Thrift在分布式系统中的角色,以及如何扩展其通信能力以适应不同的网络环境。
由于Facebook开源的RPC协议Thrift学习资料过少,导致一些同学对于Thrift的底层原理和使用方法不甚了解,Thrift The Missing Guide,是很好的一个入门材料,值得参考。
在学习这个实例时,你需要理解Thrift的IDL语法,如何使用Thrift编译器生成代码,以及如何在Java环境中集成和使用Thrift库。此外,你还需要了解如何配置和运行Thrift服务以及客户端,这通常涉及到网络通信、序列化和...
Thrift是一种开源的跨语言服务开发框架...通过这个示例,你可以学习到Thrift的基本使用,包括服务定义、编译、服务端和客户端的实现,以及如何进行跨语言通信。这对于理解和应用Thrift来构建分布式系统是非常有帮助的。
通过学习和分析这个样例,开发者可以快速掌握在Windows环境下使用QT、Thrift和Boost进行服务开发的方法。 总之,这个样例项目提供了一个很好的起点,帮助开发者了解如何在Windows上用QT与Thrift协同工作,同时利用...
Thrift Delphi实例详解 Thrift,全称为“Transportation Layer ...总之,Thrift Delphi实例是一个极好的学习资源,它揭示了跨语言服务通信的核心原理,帮助开发者快速上手Thrift,构建高效、可扩展的分布式系统。
【描述】"供大家使用" 表明这个 demo 是为了提供给开发者们参考和学习,帮助他们理解如何在自己的项目中运用 ZooKeeper 和 Thrift,实现服务间的通信和管理。 【标签】"thrift" 指出核心关注点是 Thrift 技术。...
《Thrift开源项目研究》 Thrift是一种高性能的跨语言服务框架,由Facebook于2007年开发并开源,现已成为Apache软件基金会的顶级项目。...通过学习和理解Thrift,开发者能够更好地应对复杂的分布式系统挑战。
总结,这个“thrift包及其源码”为学习和使用Thrift提供了一个良好的起点,通过阅读源码,我们可以深入理解其设计原理,提高自己的分布式服务开发能力。对于开发者来说,这是一份宝贵的资源,有助于提升对跨语言通信...
Thrift 是一个开源的跨语言服务开发框架,由Facebook于2007年设计并开源,后来成为Apache软件...在实际项目中,我们可以结合这个压缩包来学习如何设置Thrift服务,编写客户端和服务器端代码,以及如何进行通信测试。
总之,Thrift 示例代码 Java 版本提供了一个直观的学习平台,帮助开发者了解如何使用 Thrift 构建分布式服务,从而提升系统间的通信效率和开发效率。通过实践和理解这个示例,开发者能够更好地掌握 Thrift 的工作...