读dubbo源码笔记(三)

现在看 核心的 ServiceConfig

首先推荐 看以下 netcomm 童鞋的文章
[url]http://www.iteye.com/topic/1123039[/url]

在服务提供者暴露一个服务的详细过程 讲解的很清楚

服务提供者暴露一个服务
这些代码基本上都是在 ServiceConfig 完成

过程是
export --doExport --doExportUrls

export 方法 主要是 解决立即doExport还是 delay以后执行

doExport 主要是 装配和检查-- application,registries,monitor,Protocol

doExportUrls 真正的干活了
最主要的在最后的一段

if (registryURLs != null && registryURLs.size() > 0
&& url.getParameter("register", true)) {
for (URL registryURL : registryURLs) {
URL monitorUrl = loadMonitor(registryURL);
if (monitorUrl != null) {
url = url.addParameterAndEncoded(Constants.MONITOR_KEY, monitorUrl.toFullString());
}
String providerURL = url.toFullString();
if (logger.isInfoEnabled()) {
logger.info("Register dubbo service " + interfaceClass.getName() + " url " + providerURL + " to registry " + registryURL);
}
Invoker<?> invoker = proxyFactory.getInvoker(ref, (Class) interfaceClass, registryURL.addParameterAndEncoded(Constants.EXPORT_KEY, providerURL));
Exporter<?> exporter = protocol.export(invoker);
exporters.add(exporter);
}
} else {
Invoker<?> invoker = proxyFactory.getInvoker(ref, (Class) interfaceClass, url);
Exporter<?> exporter = protocol.export(invoker);
exporters.add(exporter);
}

如果 发现需要注册 那么
从proxyFactory 获取 AbstractProxyInvoker---(这里的URL是Registry URL,里面放置了 Provider URL )--- 然后 通过 RegistryProtocol 注册 --(export)-- 然后 ,生成InvokerDelegete --(这里的URL 是 从Register URL 取出Provider URL)-- 在根据实际 Provider Protocol--(export)-- 成 Exporter

RegistryProtocol 类 里面 这么玩的

public <T> Exporter<T> export(final Invoker<T> originInvoker) throws RpcException {
//export invoker
final ExporterChangeableWrapper<T> exporter = doLocolExport(originInvoker);
//registry provider
Registry registry = doRegister(originInvoker);
//设置exporter与registry的关系 (for unexport)
exporter.setRegistry(registry);
//保证每次export都返回一个新的exporter实例
return new Exporter<T>() {
public Invoker<T> getInvoker() {
return exporter.getInvoker();
}
public void unexport() {
exporter.unexport();
}
};
}


doLocolExport --最终执行 provider Protocol(dubboProtocol,rmiProtocol 等......................) 的 export方法 ,

doRegister 注册 URL ,实际上默认情况下 也是一个 dubbo协议RPC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值