com.alibaba.dubbo.rpc.protocol.injvm
Class InjvmProtocol
java.lang.Object
com.alibaba.dubbo.rpc.protocol.AbstractProtocol
com.alibaba.dubbo.rpc.protocol.injvm.InjvmProtocol
- All Implemented Interfaces:
- Protocol
public class InjvmProtocol
- extends AbstractProtocol
- implements Protocol
InjvmProtocol
- Author:
- qian.lei, william.liangf
NAME
public static final String NAME
- See Also:
- Constant Field Values
DEFAULT_PORT
public static final int DEFAULT_PORT
- See Also:
- Constant Field Values
InjvmProtocol
public InjvmProtocol()
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.