com.alibaba.dubbo.rpc.protocol.injvm
Class InjvmProtocol

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

public class InjvmProtocol
extends AbstractProtocol
implements Protocol

InjvmProtocol

Author:
qian.lei, william.liangf

Field Summary
static int DEFAULT_PORT
           
static String NAME
           
 
Constructor Summary
InjvmProtocol()
           
 
Method Summary
<T> Exporter<T>
export(Invoker<T> invoker)
          暴露远程服务:
1.
 int getDefaultPort()
          获取缺省端口,当用户没有配置端口时使用。
static InjvmProtocol getInjvmProtocol()
           
 boolean isInjvmRefer(URL url)
           
<T> Invoker<T>
refer(Class<T> serviceType, 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
 
Methods inherited from interface com.alibaba.dubbo.rpc.Protocol
destroy
 

Field Detail

NAME

public static final String NAME
See Also:
Constant Field Values

DEFAULT_PORT

public static final int DEFAULT_PORT
See Also:
Constant Field Values
Constructor Detail

InjvmProtocol

public InjvmProtocol()
Method Detail

getInjvmProtocol

public static InjvmProtocol getInjvmProtocol()

getDefaultPort

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

Specified by:
getDefaultPort in 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由框架实现并传入,协议不需要关心。

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

refer

public <T> Invoker<T> refer(Class<T> serviceType,
                            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:
serviceType - 服务的类型
url - 远程服务的URL地址
Returns:
invoker 服务的本地代理
Throws:
RpcException - 当连接服务提供方失败时抛出

isInjvmRefer

public boolean isInjvmRefer(URL url)


Copyright © 2012–2017 Alibaba. All rights reserved.