ServiceBean继承了ApplicationListener类,实现了onApplicationEvent方法
该方法会进行校验并执行this.export();
该方法会取提供者的export,如果有就直接取得,没有则执行doExport()
进行一系列校验后调用doExportUrls
此时会加载注册配置信息获取url列表
然后循环protocols进行下一步doExportUrlsFor1Protocol
在该方法中会根据是远程方法还是本地方法和url的个数进行不同的调度。
Exporter<?> exporter = protocol.export(invoker);最后会执行这个方法。
进入DubboProtocol类,调用export方法
调用openServer进行createServer
该方法在Bind方法会对这个url进行netty监听,最后会进入NettyTransporter类的bind
会新建一个nettyServer,并注册NettyCodecAdapter解析器用于解码,该解码器解决了dubbo的半包和粘包问题,使用buffer数组的概念。netty的ServerBootStrap会监听该信息。
至此,用于监听的Export已经生成,可以监听客户端发过来的消息解码之后通过netty的requestHandler进行回调处理。
注册的requestHandler在DubboProtocol类中自定义:
注册到zk节点是在RegistryProtocol的export中调用了ZookeeperRegistry的doRegister
http://note.youdao.com/noteshare?id=f4941136fe10bf2337c9ea15b7cbfefe