thrift 服务器如何获取客户端地址
2013-02-18 20:11
399 查看
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();
}
};
}
>>>>>
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();
}
};
}
相关文章推荐
- thrift 服务器如何获取客户端地址
- 关于WEB服务器如何获取客户端MAC地址的问题
- 服务器如何获取客户端用户的(城市)地址[获得真实IP再获得城市]
- golang thrift 源码分析,服务器和客户端究竟是如何工作的
- 如何获取客户端IP、WEB服务器IP
- 如何获取客户端IP、WEB服务器IP
- EL表达式获取地址栏地址以及jsp如何获取服务器信息
- php如何获取经多个服务器转发后的客户端ip
- 问题:客户端从服务器分页获取列表,如何保证流量最少,且客户端和Server数据的一致性?
- EL表达式获取地址栏地址以及jsp如何获取服务器信息
- 客户端如何获取服务器控件的值(原理与实例)
- C#中如何获取服务器IP,名称,操作系统,客户端IP,名称!
- 如何获取客户端的IP与MAC地址
- 客户端如何获取服务器控件的值(原理与实例)
- 如何获取客户端MAC地址
- socket 客户端如何获取服务器传回来的字符集
- F5中源地址转换(AutoMap)模式下后端服务器获取客户端真正的IP地址
- 如何用 PHP 来获取客户端 IP 和 服务器(主机)的 IP
- F5中源地址转换(AutoMap)模式下后端服务器获取客户端真正的IP地址
- 可能最详细的教程,新手如何获取Zcash钱包(ZEC钱包)官方客户端地址的方法