dubboProtocol是dubbo中的核心类,具体实现了暴露服务和引用服务。也就是export方法。
public <T> Exporter<T> export(Invoker<T> invoker) throws RpcException {
URL url = invoker.getUrl();
// export service.
String key = serviceKey(url);
DubboExporter<T> exporter = new DubboExporter<T>(invoker, key, exporterMap);
exporterMap.put(key, exporter);
// .....
openServer(url);
return exporter;
}
export的方法很简单,上面只保留了核心代码,可以看到首先根据url生成serviceKey,也就是这个invoker的唯一标识,然后放到exportMap中缓存起来。openServer会启动一个socket服务(默认监听20880端口),里面最终会调用createServer方法:
private ExchangeServer createServer(URL url) {
//....
ExchangeServer server;
try {
server = Exchangers.bind(url, requestHandler);
} catc