com.alibaba.dubbo.rpc.support
Class MockProtocol

java.lang.Object
  extended by com.alibaba.dubbo.rpc.protocol.AbstractProtocol
      extended by com.alibaba.dubbo.rpc.support.MockProtocol
All Implemented Interfaces:
Protocol

public final class MockProtocol
extends AbstractProtocol

MockProtocol 用于在consumer side 通过url及类型生成一个mockInvoker

Author:
chao.liuc

Constructor Summary
MockProtocol()
           
 
Method Summary
<T> Exporter<T>
export(Invoker<T> invoker)
          暴露远程服务:
1.
 int getDefaultPort()
          获取缺省端口,当用户没有配置端口时使用。
<T> Invoker<T>
refer(Class<T> type, URL url)
          引用远程服务:
1.
 
Methods inherited from class com.alibaba.dubbo.rpc.protocol.AbstractProtocol
destroy
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MockProtocol

public MockProtocol()
Method Detail

getDefaultPort

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

Returns:
缺省端口

export

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

Type Parameters:
T - 服务的类型
Parameters:
invoker - 服务的执行体
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时,连接失败不能抛出异常,并内部自动恢复。

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


Copyright © 2012–2017 Alibaba. All rights reserved.