com.alibaba.dubbo.rpc.protocol
Class ProtocolFilterWrapper

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

public class ProtocolFilterWrapper
extends Object
implements Protocol

ListenerProtocol

Author:
william.liangf

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

Constructor Detail

ProtocolFilterWrapper

public ProtocolFilterWrapper(Protocol protocol)
Method Detail

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> 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.