spring读取<dubbo:service>
初始化ServiceBean,然后执行到export(),doExport(),doExportUrls
@SuppressWarnings({ "unchecked", "rawtypes" }) private void doExportUrls() { List<URL> registryURLs = loadRegistries(true); for (ProtocolConfig protocolConfig : protocols) { doExportUrlsFor1Protocol(protocolConfig, registryURLs); } }
当前的protocolConfig为<dubbo:protocol name="dubbo" port="20883" id="dubbo" />
然后protocol.export(invoker)
如果使用的是netty
NettyServer.doOpen()
此时真正的启动了dubbo服务
我们下面看看当一个请求过来的时候,它的调用流程
首先进入 NettyHandler
@Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { NettyChannel channel = NettyChannel.getOrAddChannel(ctx.getChannel(), url, handler); try { handler.received(channel, e.getMessage()); } finally { NettyChannel.removeChannelIfDisconnected(ctx.getChannel()); } }