首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

dubbo源码学习三——暴露服务exporter、invoker

前面我们知道通过自定义标签,我们可以定位到相关标签的解析,同时梳理出三个重要的bean:ServiceBean、ReferenceBean、ConfigCenterBean。而通过Servicebean,可以看到ServiceConfig中有我们关注的export方法,而通过export,我们可以看到其暴露服务,又分为本地暴露和远程暴露两种,而暴露之前,会进行配置的检查,然后进行url的组装操作,接着进行exporter,而暴露之前,会进行getInvoker操作。而在getInvoker操作中,首先会进行适配,然后进行动态代理模板生成,生成class文件。而export操作中,进入到RegisterProtocol中,export又分为暴露doLocalExport(originInvoker, providerUrl)——>protocol.export(invokerDelegate)——>DubboProtocol#export(Invoker<T> invoker),完成配置的放入map之后,进行服务器开启openServer(url),进行双重校验创建服务器createServer(url)-——> Exchangers.bind(url, requestHandler)——>getExchanger(url).bind(url, handler)——>HanderExchanger#bind(URL url, ExchangeHandler handler)——>Transporters.bind(url, new DecodeHandler(new HeaderExchangeHandler(handler)))——> getTransporter().bind(url, handler)——>NettyTransporter#NettyServer(url, listener)——>NettyServer#doOpen()_——>ServerBootstrap# bind(final SocketAddress localAddress),进行配置的和注册、订阅过程。暴露的过程又是首先进行适配,然后适配之后,进行到dubboProtocol中,进行getInvoker操作。

03

一种精确从文本中提取URL的思路及实现

在今年三四月份,我接受了一个需求:从文本中提取URL。这样的需求,可能算是非常小众的需求了。大概只有QQ、飞信、阿里旺旺等之类的即时通讯软件存在这样的需求。在研究这个之前,我测试了这些软件这块功能,发现它们这块的功能还是非常弱的。这类软件往往也是恶意URL传播的媒介,如果不能准确识别出URL,相应的URL安全检测也无从谈起。而且网上也有很多使用正则表达式的方法,可是我看了下,方法简单但是不够精确,对于要求不高的情况可以胜任,但是如果“坏人”想绕过这种提取也是很方便的。(转载请指明出处)下面也是我在公司内部做的一次分享的内容:

02
领券