您的位置:首页 > 其它

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();

}

};

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: