com.alibaba.dubbo.registry.integration
Class RegistryProtocol

java.lang.Object
  extended by com.alibaba.dubbo.registry.integration.RegistryProtocol
All Implemented Interfaces:
Protocol

public class RegistryProtocol
extends Object
implements Protocol

RegistryProtocol

Author:
william.liangf, chao.liuc

Nested Class Summary
static class RegistryProtocol.InvokerDelegete<T>
           
 
Constructor Summary
RegistryProtocol()
           
 
Method Summary
 void destroy()
          释放协议:
1.
<T> Exporter<T>
export(Invoker<T> originInvoker)
          暴露远程服务:
1.
 int getDefaultPort()
          获取缺省端口,当用户没有配置端口时使用。
 Map<URL,NotifyListener> getOverrideListeners()
           
static RegistryProtocol getRegistryProtocol()
           
<T> Invoker<T>
refer(Class<T> type, URL url)
          引用远程服务:
1.
 void setCluster(Cluster cluster)
           
 void setProtocol(Protocol protocol)
           
 void setProxyFactory(ProxyFactory proxyFactory)
           
 void setRegistryFactory(RegistryFactory registryFactory)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RegistryProtocol

public RegistryProtocol()
Method Detail

getRegistryProtocol

public static RegistryProtocol getRegistryProtocol()

setCluster

public void setCluster(Cluster cluster)

setProtocol

public void setProtocol(Protocol protocol)

setRegistryFactory

public void setRegistryFactory(RegistryFactory registryFactory)

setProxyFactory

public void setProxyFactory(ProxyFactory proxyFactory)

getDefaultPort

public int getDefaultPort()
Description copied from interface: Protocol
获取缺省端口,当用户没有配置端口时使用。

Specified by:
getDefaultPort in interface Protocol
Returns:
缺省端口

getOverrideListeners

public Map<URL,NotifyListener> getOverrideListeners()

export

public <T> Exporter<T> export(Invoker<T> originInvoker)
                   throws RpcException
Description copied from interface: Protocol
暴露远程服务:
1. 协议在接收请求时,应记录请求来源方地址信息:RpcContext.getContext().setRemoteAddress();
2. export()必须是幂等的,也就是暴露同一个URL的Invoker两次,和暴露一次没有区别。
3. export()传入的Invoker由框架实现并传入,协议不需要关心。

Specified by:
export in interface Protocol
Type Parameters:
T - 服务的类型
Parameters:
originInvoker - 服务的执行体
Returns:
exporter 暴露服务的引用,用于取消暴露
Throws:
RpcException - 当暴露服务出错时抛出,比如端口已占用

refer

public <T> Invoker<T> refer(Class<T> type,
                            URL url)
                 throws RpcException
Description copied from interface: Protocol
引用远程服务:
1. 当用户调用refer()所返回的Invoker对象的invoke()方法时,协议需相应执行同URL远端export()传入的Invoker对象的invoke()方法。
2. refer()返回的Invoker由协议实现,协议通常需要在此Invoker中发送远程请求。
3. 当url中有设置check=false时,连接失败不能抛出异常,并内部自动恢复。

Specified by:
refer in interface Protocol
Type Parameters:
T - 服务的类型
Parameters:
type - 服务的类型
url - 远程服务的URL地址
Returns:
invoker 服务的本地代理
Throws:
RpcException - 当连接服务提供方失败时抛出

destroy

public void destroy()
Description copied from interface: Protocol
释放协议:
1. 取消该协议所有已经暴露和引用的服务。
2. 释放协议所占用的所有资源,比如连接和端口。
3. 协议在释放后,依然能暴露和引用新的服务。

Specified by:
destroy in interface Protocol


Copyright © 2012–2017 Alibaba. All rights reserved.