在上一节Apache Thrift 初学小讲(二)【一个简单示例】中client端提到http类型的transport,但是并没有给出相应的服务端实现。
本节主要写一个transport为http的例子,以java为例,server端thrift提供了一个类TExtensibleServlet,只需要写一个servlet继承这个类,并实现以下抽象方法即可:
protected TProtocolFactory getInProtocolFactory();//in通信协议
protected TProtocolFactory getOutProtocolFactory();//out通信协议
protected TProcessor getProcessor();//具体的业务处理逻辑类
然后选择一个servlet容器比如tomcat发布这个servlet,最后client端的transport使用THttpClient即可。
服务端TestServlet.java:
import javax.servlet.annotation.WebServlet; import org.apache.thrift.TProcessor; import org.apache.thrift.protocol.TCompactProtocol; import org.apache.thrift.protocol.TProtocolFactory; import org.apache.thrift.server.TExtensibleServlet; import thrift.test.ThriftTest; @WebServlet("/TestServlet") public class TestServlet extends TExtensibleServlet { @Override protected TProtocolFactory getInProtocolFactory() { TProtocolFactory tProtocolFactory = new TCompactProtocol.Factory(); return tProtocolFactory; } @Override protected TProtocolFactory getOutProtocolFactory() { TProtocolFactory tProtocolFactory = new TCompactProtocol.Factory(); return tProtocolFactory; } @Override protected TProcessor getProcessor() { //具体的业务逻辑类,实现ThriftTest.thrift里的getUser接口 TestHandler testHandler = new TestHandler(); //ThriftTest.Processor是生成的服务端代码 ThriftTest.Processor testProcessor = new ThriftTest.Processor(testHandler); return testProcessor; } }
客户端TestClient.java:
import org.apache.thrift.protocol.TCompactProtocol; import org.apache.thrift.protocol.TProtocol; import org.apache.thrift.transport.THttpClient; import org.apache.thrift.transport.TTransport; import thrift.test.ThriftTest; import thrift.test.User; public class TestClient { public static void main(String [] args) throws Exception { String host = "localhost"; int port = 8080; String url = "http://" + host + ":" + port + "/test/TestServlet"; TTransport transport = new THttpClient(url); //通信方式为http TProtocol tProtocol = new TCompactProtocol(transport); //通信协议 //ThriftTest.Client是生成的客户端代码 ThriftTest.Client testClient = new ThriftTest.Client(tProtocol); System.out.println("connect " + host + ":" + port); transport.open(); User user = testClient.getUser(2); //getUser就是ThriftTest.thrift所定义的接口 System.out.println("名字:"+ user.getName()); transport.close(); } }
启动tomcat,运行TestClient,结果:
connect localhost:8080
名字:另外一个烟火
工程文件结构:
附件ThriftServlet.rar是整个eclipse工程文件。
相关推荐
在"Apache Thrift 初学小讲(五)【代理】"这篇博文中,我们将探讨Thrift如何实现代理服务,这在分布式系统中非常关键,因为代理可以提供负载均衡、安全控制、监控等功能。 1. **接口定义语言(IDL)**:Thrift ...
在本篇初学小讲中,我们将重点关注Thrift在负载均衡方面的应用,这对于构建大型分布式系统至关重要。Thrift通过提供一种高效的数据序列化机制以及RPC(远程过程调用)接口,使得不同编程语言之间可以轻松地进行通信...
在本篇小讲中,我们将探讨如何将Thrift与Spring框架结合,以便于构建微服务架构。 首先,让我们了解Thrift的基本工作原理。Thrift IDL(接口定义语言)允许开发者声明服务方法和数据类型,类似于Java中的接口或C++...
Apache Thrift 是一个开源的软件框架,用于构建可伸缩的、跨语言的服务。它结合了接口定义语言(IDL)和库,允许开发者定义数据结构和服务接口,然后自动生成多种编程语言的代码,使得不同语言之间可以高效地进行...
本例改编自Apache Thrift教程: http://mikecvet.wordpress.com/2010/05/13/apache-thrift-tutorial-the-sequel/ http://chanian.com/2010/05/13/thrift-tutorial-a-php-client/ 原教程使用的是c++ server和...
Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年开发并开源,后来成为Apache软件基金会的顶级项目。Thrift的核心思想是通过定义一种中间描述文件(.thrift),来实现数据结构和服务接口的跨语言共享。这...
Thrift是由Facebook开发并在2007年贡献给Apache基金会的一款开源项目。它的主要目的是解决跨平台、跨语言的系统间大数据量传输通信问题。在早期,Facebook面临着系统之间语言环境不一致的问题,因此需要一种能够实现...
THRIFT 是一个开源的跨语言服务开发框架,由 Facebook 在 2007 年创建并贡献给了 Apache 基金会。它旨在提供一种高效、可扩展、跨平台的解决方案,用于构建分布式系统中的应用程序接口(API)。通过 THRIFT,开发者...
在IT领域,尤其是在大数据处理和分布式系统中,HBase是一个重要的NoSQL数据库,它基于Apache Hadoop并提供了高性能、列式存储、可扩展的实时读写能力。而Thrift是一种跨语言的服务框架,由Facebook开发,它允许不同...
Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年开源,现由Apache基金会维护。它允许开发者定义服务接口,然后自动生成多种编程语言的代码,使得不同语言之间可以进行高效、可靠的RPC(远程过程调用)...
Thrift-0.9.1 是一个开源的跨语言服务开发框架,由Facebook于2007年开源,后来成为了Apache软件基金会的顶级项目。这个版本的Thrift源码包包含了一系列的工具和库,使得开发者能够高效地构建分布式系统。Thrift的...
Thrift是一种开源的跨语言服务开发框架,最初由Facebook开发并贡献给Apache基金会。它允许开发者定义服务接口和数据类型,然后自动生成多种编程语言的代码,使得在不同语言之间进行高效、可靠的通信成为可能。在这个...
Thrift是一种跨语言的服务开发框架,最初由Facebook开发,现在是Apache软件基金会的项目。它允许程序员定义服务接口,然后自动生成多种编程语言的代码,使得在这些不同的语言之间进行远程过程调用(RPC)变得容易。...
Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年开发并开源,后来成为Apache软件基金会的顶级项目。它通过定义一种中间语言(IDL,Interface Definition Language)来描述服务接口,允许开发者在不同的...
Thrift和Avro是两种广泛使用的数据序列化和远程过程调用(RPC)框架,它们在分布式系统中扮演着重要角色。在这个实例中,我们将深入理解这两种技术,并探讨它们各自的特性和应用场景。 Thrift是由Facebook开发的一...
Thrift服务开发框架v0.16.0是一款强大的跨语言服务开发工具,它由Facebook开源,现由Apache基金会维护。这个版本的Thrift提供了一种高效、灵活且可扩展的方式来构建分布式系统。Thrift的核心理念是通过定义一种中间...
#### 三、Apache Zeppelin 的安装与启动 在 Hadoop 分布式环境中部署 Zeppelin 通常涉及以下几个步骤: 1. **下载并安装**:从 Apache 官方网站下载最新的 Zeppelin 发行版,按照官方文档完成安装。 2. **配置环境...
安装和使用Cassandra-0.8.4,你需要解压下载的"apache-cassandra-0.8.4"压缩包,配置相关的环境变量,启动服务,并使用CQL或者Thrift接口进行数据操作。对于初学者,理解其分布式特性和数据模型是入门的关键。同时,...