当前位置: 首页>>代码示例>>Java>>正文


Java Invocation.getMethodName方法代码示例

本文整理汇总了Java中com.alibaba.dubbo.rpc.Invocation.getMethodName方法的典型用法代码示例。如果您正苦于以下问题:Java Invocation.getMethodName方法的具体用法?Java Invocation.getMethodName怎么用?Java Invocation.getMethodName使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.alibaba.dubbo.rpc.Invocation的用法示例。


在下文中一共展示了Invocation.getMethodName方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: invoke

import com.alibaba.dubbo.rpc.Invocation; //导入方法依赖的package包/类
@Override
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
  long start = System.currentTimeMillis();
  String classDotMethod = (invocation.getInvoker().getInterface().getName().concat(".").concat(invocation
      .getMethodName()));

  try {
    Result r = invoker.invoke(invocation);
    long end = System.currentTimeMillis();
    LogBean log = new LogBean();
    log.ct = (end - start);
    log.k = (invocation.getInvoker().getInterface().getName() + "." + invocation.getMethodName());
    // provider
    log.ext = (invoker.getUrl().getAddress());
    log.t = System.currentTimeMillis();
    log.p = Arrays.toString(invocation.getArguments());
    log.r = (r != null ? r.getValue() : null);
    log.tp = LogBean.TYPE_DUBBO_PERF; // DUBBO_PERF
    dubboLogger.info(JSON.toJSONString(log));
    return r;
  } catch (Exception e) {
    logger.error("DubboServiceFilter.invoke error args : invoker={},invocation={},e={} ", invoker, invocation, e);
    throw e;
  }
}
 
开发者ID:eXcellme,项目名称:eds,代码行数:26,代码来源:DubboServiceFilter.java

示例2: getMethodSignature

import com.alibaba.dubbo.rpc.Invocation; //导入方法依赖的package包/类
private String getMethodSignature(Invocation invocation) {
    StringBuilder buf = new StringBuilder(invocation.getMethodName());
    buf.append("(");
    Class<?>[] types = invocation.getParameterTypes();
    if (types != null && types.length > 0) {
        boolean first = true;
        for (Class<?> type : types) {
            if (first) {
                first = false;
            } else {
                buf.append(", ");
            }
            buf.append(type.getSimpleName());
        }
    }
    buf.append(")");
    return buf.toString();
}
 
开发者ID:yunhaibin,项目名称:dubbox-hystrix,代码行数:19,代码来源:DeprecatedFilter.java

示例3: invoke

import com.alibaba.dubbo.rpc.Invocation; //导入方法依赖的package包/类
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
    String key = invoker.getInterface().getName() + "." + invocation.getMethodName();
    if (! logged.contains(key)) {
        logged.add(key);
        if (invoker.getUrl().getMethodParameter(invocation.getMethodName(), Constants.DEPRECATED_KEY, false)) {
            LOGGER.error("The service method " + invoker.getInterface().getName() + "." + getMethodSignature(invocation) + " is DEPRECATED! Declare from " + invoker.getUrl());
        }
    }
    return invoker.invoke(invocation);
}
 
开发者ID:flychao88,项目名称:dubbocloud,代码行数:11,代码来源:DeprecatedFilter.java

示例4: invoke

import com.alibaba.dubbo.rpc.Invocation; //导入方法依赖的package包/类
public Result invoke(Invoker<?> invoker, Invocation inv)
		throws RpcException {
    String token = invoker.getUrl().getParameter(Constants.TOKEN_KEY);
    if (ConfigUtils.isNotEmpty(token)) {
        Class<?> serviceType = invoker.getInterface();
        Map<String, String> attachments = inv.getAttachments();
   		String remoteToken = attachments == null ? null : attachments.get(Constants.TOKEN_KEY);
   		if (! token.equals(remoteToken)) {
   			throw new RpcException("Invalid token! Forbid invoke remote service " + serviceType + " method " + inv.getMethodName() + "() from consumer " + RpcContext.getContext().getRemoteHost() + " to provider "  + RpcContext.getContext().getLocalHost());
   		}
    }
	return invoker.invoke(inv);
}
 
开发者ID:yunhaibin,项目名称:dubbox-hystrix,代码行数:14,代码来源:TokenFilter.java

示例5: doInvoke

import com.alibaba.dubbo.rpc.Invocation; //导入方法依赖的package包/类
public Result doInvoke(Invocation invocation, List<Invoker<T>> invokers, LoadBalance loadbalance) throws RpcException {
    checkInvokers(invokers, invocation);
    Invoker<T> invoker = select(loadbalance, invocation, invokers, null);
    try {
        return invoker.invoke(invocation);
    } catch (Throwable e) {
        if (e instanceof RpcException && ((RpcException)e).isBiz()) { // biz exception.
            throw (RpcException) e;
        }
        throw new RpcException(e instanceof RpcException ? ((RpcException)e).getCode() : 0, "Failfast invoke providers " + invoker.getUrl() + " " + loadbalance.getClass().getSimpleName() + " select from all providers " + invokers + " for service " + getInterface().getName() + " method " + invocation.getMethodName() + " on consumer " + NetUtils.getLocalHost() + " use dubbo version " + Version.getVersion() + ", but no luck to perform the invocation. Last error is: " + e.getMessage(), e.getCause() != null ? e.getCause() : e);
    }
}
 
开发者ID:yunhaibin,项目名称:dubbox-hystrix,代码行数:13,代码来源:FailfastClusterInvoker.java

示例6: doSelect

import com.alibaba.dubbo.rpc.Invocation; //导入方法依赖的package包/类
protected <T> Invoker<T> doSelect(List<Invoker<T>> invokers, URL url, Invocation invocation) {
    String key = invokers.get(0).getUrl().getServiceKey() + "." + invocation.getMethodName();
    int length = invokers.size(); // 总个数
    int maxWeight = 0; // 最大权重
    int minWeight = Integer.MAX_VALUE; // 最小权重
    for (int i = 0; i < length; i++) {
        int weight = getWeight(invokers.get(i), invocation);
        maxWeight = Math.max(maxWeight, weight); // 累计最大权重
        minWeight = Math.min(minWeight, weight); // 累计最小权重
    }
    if (maxWeight > 0 && minWeight < maxWeight) { // 权重不一样
        AtomicPositiveInteger weightSequence = weightSequences.get(key);
        if (weightSequence == null) {
            weightSequences.putIfAbsent(key, new AtomicPositiveInteger());
            weightSequence = weightSequences.get(key);
        }
        int currentWeight = weightSequence.getAndIncrement() % maxWeight;
        List<Invoker<T>> weightInvokers = new ArrayList<Invoker<T>>();
        for (Invoker<T> invoker : invokers) { // 筛选权重大于当前权重基数的Invoker
            if (getWeight(invoker, invocation) > currentWeight) {
                weightInvokers.add(invoker);
            }
        }
        int weightLength = weightInvokers.size();
        if (weightLength == 1) {
            return weightInvokers.get(0);
        } else if (weightLength > 1) {
            invokers = weightInvokers;
            length = invokers.size();
        }
    }
    AtomicPositiveInteger sequence = sequences.get(key);
    if (sequence == null) {
        sequences.putIfAbsent(key, new AtomicPositiveInteger());
        sequence = sequences.get(key);
    }
    // 取模轮循
    return invokers.get(sequence.getAndIncrement() % length);
}
 
开发者ID:flychao88,项目名称:dubbocloud,代码行数:40,代码来源:RoundRobinLoadBalance.java

示例7: doSelect

import com.alibaba.dubbo.rpc.Invocation; //导入方法依赖的package包/类
@SuppressWarnings("unchecked")
@Override
protected <T> Invoker<T> doSelect(List<Invoker<T>> invokers, URL url, Invocation invocation) {
    String key = invokers.get(0).getUrl().getServiceKey() + "." + invocation.getMethodName();
    int identityHashCode = System.identityHashCode(invokers);
    ConsistentHashSelector<T> selector = (ConsistentHashSelector<T>) selectors.get(key);
    if (selector == null || selector.getIdentityHashCode() != identityHashCode) {
        selectors.put(key, new ConsistentHashSelector<T>(invokers, invocation.getMethodName(), identityHashCode));
        selector = (ConsistentHashSelector<T>) selectors.get(key);
    }
    return selector.select(invocation);
}
 
开发者ID:yunhaibin,项目名称:dubbox-hystrix,代码行数:13,代码来源:ConsistentHashLoadBalance.java

示例8: invoke

import com.alibaba.dubbo.rpc.Invocation; //导入方法依赖的package包/类
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
    URL url = invoker.getUrl();
    String methodName = invocation.getMethodName();
    int max = url.getMethodParameter(methodName, Constants.EXECUTES_KEY, 0);
    if (max > 0) {
        RpcStatus count = RpcStatus.getStatus(url, invocation.getMethodName());
        if (count.getActive() >= max) {
            throw new RpcException("Failed to invoke method " + invocation.getMethodName() + " in provider " + url + ", cause: The service using threads greater than <dubbo:service executes=\"" + max + "\" /> limited.");
        }
    }
    long begin = System.currentTimeMillis();
    boolean isException = false;
    RpcStatus.beginCount(url, methodName);
    try {
        Result result = invoker.invoke(invocation);
        return result;
    } catch (Throwable t) {
        isException = true;
        if(t instanceof RuntimeException) {
            throw (RuntimeException) t;
        }
        else {
            throw new RpcException("unexpected exception when ExecuteLimitFilter", t);
        }
    }
    finally {
        RpcStatus.endCount(url, methodName, System.currentTimeMillis() - begin, isException);
    }
}
 
开发者ID:yunhaibin,项目名称:dubbox-hystrix,代码行数:30,代码来源:ExecuteLimitFilter.java

示例9: getConcurrent

import com.alibaba.dubbo.rpc.Invocation; //导入方法依赖的package包/类
private AtomicInteger getConcurrent(Invoker<?> invoker, Invocation invocation) {
    String key = invoker.getInterface().getName() + "." + invocation.getMethodName();
    AtomicInteger concurrent = concurrents.get(key);
    if (concurrent == null) {
        concurrents.putIfAbsent(key, new AtomicInteger());
        concurrent = concurrents.get(key);
    }
    return concurrent;
}
 
开发者ID:dachengxi,项目名称:EatDubbo,代码行数:10,代码来源:MonitorFilter.java

示例10: invoke

import com.alibaba.dubbo.rpc.Invocation; //导入方法依赖的package包/类
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
    boolean isTraceDubbo = false;
    Tracer tracer = null;
    SpanInjector spanInjector = null;
    try {
        tracer = ApplicationContextAwareBean.CONTEXT.getBean(Tracer.class);
        spanInjector = ApplicationContextAwareBean.CONTEXT.getBean(DubboSpanInjector.class);
        isTraceDubbo = (tracer != null && spanInjector != null);
        if (isTraceDubbo) {
            String spanName = invoker.getUrl().getParameter("interface") + ":" + invocation.getMethodName() + ":" + invoker.getUrl().getParameter("version") + "(" + invoker.getUrl().getHost() + ")";
            Span newSpan = tracer.createSpan(spanName);
            spanInjector.inject(newSpan, RpcContext.getContext());
            newSpan.logEvent(Span.CLIENT_SEND);

        }

        Result result = invoker.invoke(invocation);
        return result;

    } finally {
        if (isTraceDubbo) {
            if (tracer.isTracing()) {
                tracer.getCurrentSpan().logEvent(Span.CLIENT_RECV);
                tracer.close(tracer.getCurrentSpan());
            }

        }
    }
}
 
开发者ID:threeq,项目名称:dubbo-zipkin,代码行数:30,代码来源:ConsumerSpanFilter.java

示例11: getMethodName

import com.alibaba.dubbo.rpc.Invocation; //导入方法依赖的package包/类
public static String getMethodName(Invocation invocation){
	if(Constants.$INVOKE.equals(invocation.getMethodName()) 
            && invocation.getArguments() != null 
            && invocation.getArguments().length > 0 
            && invocation.getArguments()[0] instanceof String){
        return (String) invocation.getArguments()[0];
    }
	return invocation.getMethodName();
}
 
开发者ID:zhuxiaolei,项目名称:dubbo2,代码行数:10,代码来源:RpcUtils.java

示例12: invoke

import com.alibaba.dubbo.rpc.Invocation; //导入方法依赖的package包/类
public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
    URL url = invoker.getUrl();
    String methodName = invocation.getMethodName();
    int max = invoker.getUrl().getMethodParameter(methodName, Constants.ACTIVES_KEY, 0);
    RpcStatus count = RpcStatus.getStatus(invoker.getUrl(), invocation.getMethodName());
    if (max > 0) {
        long timeout = invoker.getUrl().getMethodParameter(invocation.getMethodName(), Constants.TIMEOUT_KEY, 0);
        long start = System.currentTimeMillis();
        long remain = timeout;
        int active = count.getActive();
        if (active >= max) {
            synchronized (count) {
                while ((active = count.getActive()) >= max) {
                    try {
                        count.wait(remain);
                    } catch (InterruptedException e) {
                    }
                    long elapsed = System.currentTimeMillis() - start;
                    remain = timeout - elapsed;
                    if (remain <= 0) {
                        throw new RpcException("Waiting concurrent invoke timeout in client-side for service:  "
                                               + invoker.getInterface().getName() + ", method: "
                                               + invocation.getMethodName() + ", elapsed: " + elapsed
                                               + ", timeout: " + timeout + ". concurrent invokes: " + active
                                               + ". max concurrent invoke limit: " + max);
                    }
                }
            }
        }
    }
    try {
        long begin = System.currentTimeMillis();
        RpcStatus.beginCount(url, methodName);
        try {
            Result result = invoker.invoke(invocation);
            RpcStatus.endCount(url, methodName, System.currentTimeMillis() - begin, true);
            return result;
        } catch (RuntimeException t) {
            RpcStatus.endCount(url, methodName, System.currentTimeMillis() - begin, false);
            throw t;
        }
    } finally {
        if(max>0){
            synchronized (count) {
                count.notify();
            } 
        }
    }
}
 
开发者ID:yunhaibin,项目名称:dubbox-hystrix,代码行数:50,代码来源:ActiveLimitFilter.java


注:本文中的com.alibaba.dubbo.rpc.Invocation.getMethodName方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。