资源简介
Thrift RPC客户端的服务化框架代码,
代码片段和文件信息
package com.lighting.rpc.core.client;
import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.net.ConnectException;
import java.util.List;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransportException;
import com.lighting.rpc.core.configure.RpcServerConfiguration;
import com.lighting.rpc.core.model.ServerNode;
public class DynamicClientProxy implements InvocationHandler {
private Class ts = null;
private RpcServerConfiguration configuration = null;
public object createProxy(Class ts RpcServerConfiguration configuration) {
this.ts = ts;
this.configuration = configuration;
return Proxy.newProxyInstance(ts.getClassLoader() ts.getInterfaces() this);
}
@Override
public object invoke(object proxy Method method object[] args)
throws Throwable {
List serverNodes = configuration.getServerNodes();
int timeout = configuration.getTimeout();
for ( ServerNode serverNode : serverNodes ) {
String ip = serverNode.getIp();
int port = serverNode.getPort();
TSocket tsocket = null;
try {
tsocket = new TSocket(ip port);
tsocket.setTimeout(timeout);
TProtocol protocol = new TBinaryProtocol(tsocket);
Class[] argsClass = new Class[] {
TProtocol.class
};
Constructor cons = (Constructor) ts.getConstructor(argsClass);
T client = (T)cons.newInstance(protocol);
tsocket.open();
return method.invoke(client args);
} catch (TTransportException e) {
Throwable te = e.getCause();
if ( te != null && (te instanceof ConnectException || te instanceof IOException) ) {
// DO nothing
} else {
throw e;
}
} catch (InvocationTargetException e) {
throw e.getTargetException();
} catch (Throwable e) {
throw e;
} finally {
if ( tsocket != null ) {
tsocket.close();
}
}
}
throw new Exception(“Server is not avaiable“);
}
}
- 上一篇:wireshark omci 解析插件
- 下一篇:温度控制labview上位机程序
相关资源
- grpc-lua CentOS 7.4 执行程序打包
- PowerPCB(PADS)常见问题集合汇总(下
- 印刷电路板设计:PowerPCB5.0入门与提高
- Wind River Diab Compiler for PowerPC
- practicalgrpc.pdf
- scanms.exe 文件用来检测RPC漏洞
- WindriverPCIE驱动
- Programming Environments Manual for PowerPC.ra
- node-v57-linux-x64-glibc/grpc_node.node
- PowerISA (IBM powerpc Book 123E)
- Apress Visual C Sharp 2010 Recipes A Problem S
- RPCA 低秩稀疏分解
- PowerPC VxWorks BSP 分析中文版
- 群晖DS3615xs frpc套件
- powerpc 1020 1010手册,学习已加注释
- ADS2006A EMC仿真以及导入PCB gerber文件方
- 各种MQkafkathrift等rpc框架.zip
- 飞思卡尔P1010原理图
- grpc_node.node
- PowerPC详细教程
- RPC分布式图书管理系统代码
- AUTOSAR OPEN SOURCE CODE
- Json-RPC & Spring MVC 集成
- 群晖DS3617xs frpc套件
- thrift-zookeeper-rpc
- SharpCompress 解压缩ziprar文件解决中文乱
- 实现一个简单的RPC框架
- Tornado.2.2.1_VxWorks.5.5.1.for.PowerPC part6
- RPCA最全文献和代码
- netErpCore_V3.6 一套完整拿来即用的ERP开
评论
共有 条评论