本文整理汇总了Java中org.springframework.cglib.reflect.FastClass.getMethod方法的典型用法代码示例。如果您正苦于以下问题:Java FastClass.getMethod方法的具体用法?Java FastClass.getMethod怎么用?Java FastClass.getMethod使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.springframework.cglib.reflect.FastClass
的用法示例。
在下文中一共展示了FastClass.getMethod方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: invokeService
import org.springframework.cglib.reflect.FastClass; //导入方法依赖的package包/类
public static RpcResponse invokeService(RpcRequest request, Object serviceBean) {
if (serviceBean==null) {
serviceBean = serviceMap.get(request.getClassName());
}
if (serviceBean == null) {
// TODO
}
RpcResponse response = new RpcResponse();
if (System.currentTimeMillis() - request.getCreateMillisTime() > 180000) {
response.setResult(new ReturnT<String>(ReturnT.FAIL_CODE, "The timestamp difference between admin and executor exceeds the limit."));
return response;
}
if (accessToken!=null && accessToken.trim().length()>0 && !accessToken.trim().equals(request.getAccessToken())) {
response.setResult(new ReturnT<String>(ReturnT.FAIL_CODE, "The access token[" + request.getAccessToken() + "] is wrong."));
return response;
}
try {
Class<?> serviceClass = serviceBean.getClass();
String methodName = request.getMethodName();
Class<?>[] parameterTypes = request.getParameterTypes();
Object[] parameters = request.getParameters();
FastClass serviceFastClass = FastClass.create(serviceClass);
FastMethod serviceFastMethod = serviceFastClass.getMethod(methodName, parameterTypes);
Object result = serviceFastMethod.invoke(serviceBean, parameters);
response.setResult(result);
} catch (Throwable t) {
t.printStackTrace();
response.setError(t.getMessage());
}
return response;
}
示例2: invokeService
import org.springframework.cglib.reflect.FastClass; //导入方法依赖的package包/类
/**
*@description 远程RPC调用
*@time 创建时间:2017年7月28日下午5:03:27
*@param request
*@param serviceBean
*@return
*@author dzn
*/
public static RpcResponse invokeService(RpcRequest request) {
RpcResponse response = new RpcResponse();
//动态调用某个对象的指定方法
try {
//获取请求调用的接口实例
String serviceInterfaceName = request.getClassName();
Object serviceInstance = serviceMap.get(serviceInterfaceName);
//获取接口实例的FastClass对象
Class<?> serviceInstanceClass = serviceInstance.getClass();
FastClass serviceFastClass = FastClass.create(serviceInstanceClass);
//获取远程调用的方法
String methodName = request.getMethodName();
Class<?>[] parameterTypes = request.getParameterTypes();
FastMethod serviceFastMethod = serviceFastClass.getMethod(methodName, parameterTypes);
//调用指定的方法
Object[] parameters = request.getParameters();
Object result = serviceFastMethod.invoke(serviceInstance, parameters);
response.setResult(result);
} catch (Throwable t) {
t.printStackTrace();
response.setError(t.getMessage());
}
return response;
}
示例3: invokeService
import org.springframework.cglib.reflect.FastClass; //导入方法依赖的package包/类
public static RpcResponse invokeService(RpcRequest request, Object serviceBean) {
if (serviceBean==null) {
serviceBean = serviceMap.get(request.getClassName());
}
if (serviceBean == null) {
// TODO
}
RpcResponse response = new RpcResponse();
if (System.currentTimeMillis() - request.getCreateMillisTime() > 180000) {
response.setResult(new ReturnT<String>(ReturnT.FAIL_CODE, "the timestamp difference between admin and executor exceeds the limit."));
return response;
}
try {
Class<?> serviceClass = serviceBean.getClass();
String methodName = request.getMethodName();
Class<?>[] parameterTypes = request.getParameterTypes();
Object[] parameters = request.getParameters();
FastClass serviceFastClass = FastClass.create(serviceClass);
FastMethod serviceFastMethod = serviceFastClass.getMethod(methodName, parameterTypes);
Object result = serviceFastMethod.invoke(serviceBean, parameters);
response.setResult(result);
} catch (Throwable t) {
t.printStackTrace();
response.setError(t.getMessage());
}
return response;
}
示例4: parse
import org.springframework.cglib.reflect.FastClass; //导入方法依赖的package包/类
private void parse(Action action) {
Class clazz = action.getClass();
FastClass fastClass = FastClass.create(clazz);
for (Method method : clazz.getDeclaredMethods()) {
InterfaceTarget interfaceTarget = method.getAnnotation(InterfaceTarget.class);
if (interfaceTarget == null) {
continue;
}
String interfaceKey = interfaceTarget.path() + "_" + interfaceTarget.version();
InterfaceHandler interfaceHandler = new InterfaceHandler(interfaceKey, action, method, fastClass.getMethod(method));
// 返回表示按照声明顺序对此 Method对象所表示方法的形参进行注释的那个数组的数组。
String[] parameterNames = parameterNameDiscoverer.getParameterNames(method);
Class<?>[] parameterTypes = method.getParameterTypes();
Annotation[][] parameterAnnotations = method.getParameterAnnotations();
Preconditions.checkArgument(parameterNames.length == parameterTypes.length);
Preconditions.checkArgument(parameterNames.length == parameterAnnotations.length);
int parameterCount = parameterTypes.length;
for (int i = 0; i < parameterCount; i++) {
Annotation[] annotations = parameterAnnotations[i];
Class<?> parameterClazz = parameterTypes[i];
String parameterName = parameterNames[i];
resolveParameter(parameterName, parameterClazz, annotations, interfaceHandler);
}
LOGGER.info("path {} ,handle {}", interfaceKey, interfaceHandler);
interfaceHandlerHashMap.put(interfaceKey, interfaceHandler);
}
}