下面列出了怎么用com.alibaba.dubbo.rpc.proxy.InvokerInvocationHandler的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
@SuppressWarnings("unchecked")
public <T> T getProxy(final Invoker<T> invoker, final Class<?>[] interfaces) {
T proxy = (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
interfaces, new InvokerInvocationHandler(invoker));
return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
interfaces, new MythInvokerInvocationHandler(proxy, invoker));
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
// <dubbo:reference id="client" interface="me.cungu.transactiontreetest.case3.Client" />
Object handlerFieldValue = getFieldValue(bean, "handler");
if (handlerFieldValue != null && handlerFieldValue instanceof InvokerInvocationHandler) {
InvokerInvocationHandler invokerInvocationHandler = (InvokerInvocationHandler) handlerFieldValue;
Object invokerFieldValue = getFieldValue(invokerInvocationHandler, "invoker");
if (invokerFieldValue != null && invokerFieldValue instanceof MockClusterInvoker<?>) {
RegistryDirectory<?> directoryFieldValue = (RegistryDirectory<?>) getFieldValue(invokerFieldValue, "directory");
Map<String, ?> urlInvokerMap = directoryFieldValue.getUrlInvokerMap();
if (urlInvokerMap != null) {
for(Map.Entry<String, ?> entry : urlInvokerMap.entrySet()) {
Object invoker = getFieldValue(entry.getValue(), "invoker");
Object invoker0 = getFieldValue(invoker, "invoker"); // ListenerInvokerWrapper
beanNameMap.put((invoker0 != null ? invoker0 : invoker ).toString(), beanName); // interface me.cungu.transactiontreetest.case3.Client -> dubbo://10.144.33.31:20880/me.cungu.transactiontreetest.case3.Client?anyhost=true&application=me.cungu.transactiontree&check=false&default.check=false&default.delay=-1&delay=-1&dubbo=2.5.5.cat-SNAPSHOT&generic=false&interface=me.cungu.transactiontreetest.case3.Client&logger=slf4j&methods=m1_confirm,m1,r1_cannel&pid=8336&providerside=me.cungu.transactiontree&side=consumer×tamp=1451379561390
LOG.debug("添加beanName={}", beanName);
}
}
} else {
// TODO
throw new UnsupportedOperationException(invokerFieldValue.getClass() + " unknow type");
}
}
return bean;
}
@Override
@SuppressWarnings("unchecked")
public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {
// 服务调用入口=》
return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), interfaces, new InvokerInvocationHandler(invoker));
}
@Override
@SuppressWarnings("unchecked")
public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {
return (T) Proxy.getProxy(interfaces).newInstance(new InvokerInvocationHandler(invoker));
}
@SuppressWarnings("unchecked")
public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {
return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), interfaces, new InvokerInvocationHandler(invoker));
}
@SuppressWarnings("unchecked")
public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {
return (T) Proxy.getProxy(interfaces).newInstance(new InvokerInvocationHandler(invoker));
}
@SuppressWarnings("unchecked")
public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {
return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), interfaces, new InvokerInvocationHandler(invoker));
}
@SuppressWarnings("unchecked")
public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {
return (T) Proxy.getProxy(interfaces).newInstance(new InvokerInvocationHandler(invoker));
}
@SuppressWarnings("unchecked")
public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {
return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), interfaces, new InvokerInvocationHandler(invoker));
}
@SuppressWarnings("unchecked")
public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {
return (T) Proxy.getProxy(interfaces).newInstance(new InvokerInvocationHandler(invoker));
}
@SuppressWarnings("unchecked")
public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {
return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), interfaces, new InvokerInvocationHandler(invoker));
}
@SuppressWarnings("unchecked")
public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {
return (T) Proxy.getProxy(interfaces).newInstance(new InvokerInvocationHandler(invoker));
}
@SuppressWarnings("unchecked")
public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {
return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(), interfaces, new InvokerInvocationHandler(invoker));
}
@SuppressWarnings("unchecked")
public <T> T getProxy(Invoker<T> invoker, Class<?>[] interfaces) {
return (T) Proxy.getProxy(interfaces).newInstance(new InvokerInvocationHandler(invoker));
}