THRIFT服务器缺省无法获取客户端连接的地址。经过研究,发现通过重载transport factory+Thread local,能够简单解决。不需要修改thrift生成的代码。
>>>>>
arg.protocolFactory(protocolFactory);
arg.outputTransportFactory(new TFramedTransport.Factory());
arg.inputTransportFactory(new TFramedTransport.Factory() {
@Override
public TTransport getTransport(TTransport base) {
if(base instanceof TSocket) {
TSocket _base = (TSocket) base;
Socket socket = _base.getSocket();
if(socket != null) {
String remoteAddr = String.valueOf(socket.getRemoteSocketAddress());
ThreadLocalIpUtils.setIp(remoteAddr);
}
}
return new TFramedTransport(base) {
@Override
public void close() {
ThreadLocalIpUtils.remove();
super.close();
}
};
}
});
分享到:
相关推荐
**GO语言通过Thrift服务器和客户端通信(经典)** 在软件开发中,跨语言通信是一个常见的需求,Thrift就是一种高效、轻量级的跨语言服务框架,它由Facebook开发并开源,支持多种编程语言,包括Go语言。本文将详细...
在Hadoop方面,必须有一个运行着Thrift服务器的服务,比如Hadoop的HDFS Thrift gateway或HBase Thrift接口。这些服务提供了Thrift绑定的API,使得非Java语言如PHP可以通过Thrift协议与Hadoop交互。 对于“源码”...
3. **Python与HBase通信**:Python客户端通过导入Thrift生成的库,可以建立到HBase Thrift服务器的连接。首先,需要配置服务器地址和端口,然后创建Thrift客户端对象。接着,可以使用该客户端执行各种HBase操作,...
通过Thrift,PHP可以生成相应的客户端库,与HBase的Thrift服务器端接口进行交互。这里提到了“thrift和thrift2两套代码”,这可能意味着项目包含了两种版本的Thrift实现,可能是因为不同的需求或者兼容性考虑。 在...
总结来说,这个项目提供了一个学习Thrift的实例,涵盖了Thrift的接口定义、服务器端实现、客户端调用以及实际数据通信的过程。通过参与这个项目,你可以深入了解Thrift如何简化分布式系统间的通信,以及如何在实际...
通过运行这个测试工程,你可以了解如何将Thrift服务部署到支持HTTP的服务器上,如Tomcat或Jetty,以及如何使用HTTP客户端(如curl或浏览器)与之交互。 总结一下,Thrift实现HTTP协议的关键在于创建一个自定义...
Thrift是一种高效的跨语言服务开发框架,由Facebook开源,它通过定义服务接口和数据类型,生成不同语言的客户端和服务器代码,实现高效的数据传输。 本篇我们将深入探讨如何使用Wireshark抓取和解析Thrift协议接口...
连接HBase的第一步是建立到Thrift服务器的连接。在Python中,我们可以使用`happybase`库创建一个连接对象: ```python from happybase import Connection connection = Connection('hbase主机地址', port=9090)...
在这个实战源码中,我们有两个主要的部分:`thrift-server` 和 `thrift-client`,分别代表服务端和客户端的实现。 服务端(thrift-server): 1. **Thrift IDL (接口定义语言)**:首先,你需要定义服务的接口和数据...
首先,你需要从Thrift的官方网站或者通过Git克隆其源码仓库获取最新版本的Thrift。在本例中,我们使用的是`thrift-0.8.0`这个版本,你可以从Apache的发布页面下载对应的压缩包。 2. **解压源码** 解压缩下载的`...
4. **构建服务器**:使用生成的Java服务接口和处理器,创建Thrift服务器实例,并启动服务监听指定端口。 5. **编写客户端**:同样基于生成的Java代码,开发者可以创建客户端代码,通过Thrift的客户端API调用远程...
注意,你需要替换`localhost:9090`为实际的HBase Thrift服务器地址和端口。 `hbase_t.go`文件可能包含了实现HBase操作的具体函数,如`exist`、`get`、`put`和`delete`。这些函数会使用上述创建的客户端与HBase交互...
首先,我们需要在Hbase服务器上安装并配置Thrift服务,然后在客户端(这里是C#应用)中引用Thrift生成的Hbase接口库。Thrift的IDL(Interface Description Language)文件定义了与Hbase交互的协议,包括表的操作、行...
从外部 thrift 服务器获取内容(此模块中的照片)并响应客户端(浏览器)的示例 nginx 模块 我为什么写这个 人们一直在尝试编写 http 服务器来使用各种库(proxygen、libevent...)来提供来自 thrift 服务器的内容,...
在HBase的conf目录下,需要配置thrift的相关设置,比如开启Thrift服务器,并指定使用的Thrift版本(这里是0.9.1)。 2. **生成Thrift客户端代码**:使用Thrift编译器将HBase的thrift IDL文件(通常是`hbase.thrift`...
在Linux环境下安装和测试Thrift是一项技术性较强的工作,Thrift是一种开源的跨语言服务开发框架,它允许程序员定义服务接口和服务数据类型,然后自动生成客户端和服务器端的代码,以便于不同编程语言之间进行高效、...
4. **环境问题**:确认Hadoop和Hive服务器运行正常,且Thrift服务器已启动,监听正确的端口。 5. **错误日志**:查看PHP运行时的错误日志,以获取更具体的错误信息,这对于定位问题非常关键。 解决这个问题通常涉及...
2. 创建一个Spring配置类,配置Thrift服务器的bean。这通常包括设置服务器端口、服务处理程序等。 3. 使用`TServer`和`TProcessorFactory`启动服务器。Spring可以帮助我们管理这些bean的生命周期。 创建Thrift ...
根据性能需求,你可能需要调整Thrift服务器的并发处理和缓冲设置。 总之,HBase、Thrift和Python的结合提供了在Python环境中便捷访问HBase的能力,尤其适合需要进行复杂数据分析或实时查询的项目。通过理解这些技术...
访问 Thrift 官方网站(https://thrift.apache.org/)获取最新版本,并按照平台指南进行安装。通常,这涉及到下载源码、编译并安装到系统路径中。 2. **创建 IDL 文件** Thrift 服务定义是通过 `.thrift` 文件完成...