`
halloffame
  • 浏览: 55134 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Apache Thrift 初学小讲(三)【http】

阅读更多

在上一节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工程文件。

  • 大小: 35.6 KB
2
1
分享到:
评论

相关推荐

    Apache Thrift 初学小讲(五)【代理】

    在"Apache Thrift 初学小讲(五)【代理】"这篇博文中,我们将探讨Thrift如何实现代理服务,这在分布式系统中非常关键,因为代理可以提供负载均衡、安全控制、监控等功能。 1. **接口定义语言(IDL)**:Thrift ...

    Apache Thrift 初学小讲(七)【负载均衡】

    在本篇初学小讲中,我们将重点关注Thrift在负载均衡方面的应用,这对于构建大型分布式系统至关重要。Thrift通过提供一种高效的数据序列化机制以及RPC(远程过程调用)接口,使得不同编程语言之间可以轻松地进行通信...

    Apache Thrift 初学小讲(六)【spring】

    在本篇小讲中,我们将探讨如何将Thrift与Spring框架结合,以便于构建微服务架构。 首先,让我们了解Thrift的基本工作原理。Thrift IDL(接口定义语言)允许开发者声明服务方法和数据类型,类似于Java中的接口或C++...

    Apache Thrift 初学小讲(八)【zookeeper实现服务注册与发现】

    Apache Thrift 是一个开源的软件框架,用于构建可伸缩的、跨语言的服务。它结合了接口定义语言(IDL)和库,允许开发者定义数据结构和服务接口,然后自动生成多种编程语言的代码,使得不同语言之间可以高效地进行...

    用C#和C++写的Apache Thrift的小范例

    本例改编自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-Demo

    Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年开发并开源,后来成为Apache软件基金会的顶级项目。Thrift的核心思想是通过定义一种中间描述文件(.thrift),来实现数据结构和服务接口的跨语言共享。这...

    Java Thrift demo例子

    Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年开源,现由Apache基金会维护。它允许开发者定义服务接口,然后自动生成多种编程语言的代码,使得不同语言之间可以进行高效、可靠的RPC(远程过程调用)...

    THRIFT 学习资料

    THRIFT 是一个开源的跨语言服务开发框架,由 Facebook 在 2007 年创建并贡献给了 Apache 基金会。它旨在提供一种高效、可扩展、跨平台的解决方案,用于构建分布式系统中的应用程序接口(API)。通过 THRIFT,开发者...

    thrift1 查询hbase

    在IT领域,尤其是在大数据处理和分布式系统中,HBase是一个重要的NoSQL数据库,它基于Apache Hadoop并提供了高性能、列式存储、可扩展的实时读写能力。而Thrift是一种跨语言的服务框架,由Facebook开发,它允许不同...

    thrift-0.9.1

    Thrift-0.9.1 是一个开源的跨语言服务开发框架,由Facebook于2007年开源,后来成为了Apache软件基金会的顶级项目。这个版本的Thrift源码包包含了一系列的工具和库,使得开发者能够高效地构建分布式系统。Thrift的...

    thrift c++ php

    Thrift是一种开源的跨语言服务开发框架,最初由Facebook开发并贡献给Apache基金会。它允许开发者定义服务接口和数据类型,然后自动生成多种编程语言的代码,使得在不同语言之间进行高效、可靠的通信成为可能。在这个...

    thrift.demo.rar

    Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年开发并开源,后来成为Apache软件基金会的顶级项目。它通过定义一种中间语言(IDL,Interface Definition Language)来描述服务接口,允许开发者在不同的...

    Thrift和Avro实例

    Thrift和Avro是两种广泛使用的数据序列化和远程过程调用(RPC)框架,它们在分布式系统中扮演着重要角色。在这个实例中,我们将深入理解这两种技术,并探讨它们各自的特性和应用场景。 Thrift是由Facebook开发的一...

    Thrift服务开发框架 v0.16.0.gz

    Thrift服务开发框架v0.16.0是一款强大的跨语言服务开发工具,它由Facebook开源,现由Apache基金会维护。这个版本的Thrift提供了一种高效、灵活且可扩展的方式来构建分布式系统。Thrift的核心理念是通过定义一种中间...

    【Thrift之C++远程调用helloworld菜鸟教程】

    Thrift是一种跨语言的服务开发框架,最初由Facebook开发,现在是Apache软件基金会的项目。它允许程序员定义服务接口,然后自动生成多种编程语言的代码,使得在这些不同的语言之间进行远程过程调用(RPC)变得容易。...

    apache-cassandra-0.8.4-bin.tar.gz 分布式数据库

    安装和使用Cassandra-0.8.4,你需要解压下载的"apache-cassandra-0.8.4"压缩包,配置相关的环境变量,启动服务,并使用CQL或者Thrift接口进行数据操作。对于初学者,理解其分布式特性和数据模型是入门的关键。同时,...

    hbase中文文档,适合初学者学习

    Apache HBase 是一款基于 Apache Hadoop 和 Apache ZooKeeper 的分布式、版本化、面向列的数据库。它是NoSQL数据库的一种,特别适用于处理大规模数据,尤其在实时读写场景下表现出色。HBase的设计目标是为海量稀疏...

    flume开发相关工具包

    3. **数据源(Source)**:Flume支持多种数据源,如Avro,Thrift,HTTP,Spooling Directory等。例如,Spooling Directory Source可以监控指定目录下的新文件并读取其内容。 4. **数据接收器(Sink)**:数据接收器...

    java网络编程学习资料

    在实际项目中,Java网络编程还可能用到RPC(远程过程调用)框架,如Apache Thrift、gRPC等,它们简化了跨网络的服务间通信。还有WebSocket协议,用于实现持久化的双向通信,Java提供了`javax.websocket`包来支持...

Global site tag (gtag.js) - Google Analytics