最近在项目的开发中遇到了一个问题,就是服务提供方使用@service发布dubbo服务时候,服务消费方@Reference无法注入bean导致空指针异常的问题.分析原因为@service注解并没有将服务发布出去而导致的.所以解决问题的关键点在于如何将服务正确的发布出去.事务采用了aop技术,而aop默认采用的是基于JDK的动态代理(接口代理),所以在服务发布的时候无法确定使用接口类还是真实类,从而导致服务发布不成功. 故此,我们采用cglib代理,也就是子类代理的方式,需显式配置:<aop:as…
如上图所看到的的Dubbo的暴露服务的过程,不难看出它也和消费者端非常像,也须要一个像reference的对象来维护service关联的全部对象及其属性.这里的reference就是provider.因为ServiceBean实现了  InitializingBean接口,全部在Spring实例化这个bean后会调用接口方法afterPropertiesSet: public void afterPropertiesSet() throws Exception { //假设没有配置provi…
计算机-管理-服务--服务列表找到VMware Authorization Service 并双击 打开服务.…
本文将深入分析dubbo的服务发布涉及到的流程及主要类的代码.首先,我们先从类的关系图来看一下dubbo发布服务涉及到的相关类. 1.类图 上图展示了部分服务发布过程中需要使用到的类和接口,其中: spring适配涉及到的类:DubboNamespaceHandler.DubboBeanDefinitionParser.ServiceBean; 配置信息存储:ServicdConfig.RegistryConfig.MonitorConfig.ProtocolConfig.ProviderCon…
前面讲过Dubbo SPI拓展机制,通过ExtensionLoader实现可插拔加载拓展,本节将接着分析Dubbo的服务发布过程. 以源码中dubbo-demo模块作为切入口一步步走进Dubbo源码.在 dubbo-demo-provider模块下配置文件 dubbo-demo-provider.xml中定义了服务提供方.注册中心.协议及端口.服务接口等信息,如下: <?xml version="1.0" encoding="UTF-8"?> <b…
1.概述 spring的事务注解@Transaction 相信很多人都用过,而@Transaction 默认配置适合80%的配置. 本篇文章不是对spring注解事务做详细介绍,而是解决一些实际场景下遇到的问题 2.事务回滚 2.1 默认回滚策略 @Transactional public void rollback() throws SQLException { // update db throw new SQLException("exception"); } 上述代码事务会回滚…
在HelloServiceImpl类上加入@Transactional注解后,虽然工程可以正常跑起来,但是通过dubbo管理控制台可以看到里面并没有服务发布上来. 此时启动服务提供者和服务消费者,并访问 上面的错误为没有可用的服务提供者. 问题产生的原因是在HelloServiceImpl类上加入事务注解后,Spring会为此类基于JDK动态代理技术创建代理对象,创建的代理对象完整类名为com.sun.proxy.$Proxy35,导致Dubbo在进行包匹配时没有成功(因为我们在发布服务时扫描的…
什么是DUBBO DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案. 准备工作 安装zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务. 具体安装步骤:略,请参考网上资源,很简单. 安装完后,配置一下zoo.cfg配置文件,里面有个端口的配置,我配置的是2181端口,客户端将使用该端口连接该服务. 我的zookeeper配置的服务器ip为10.0.10.51. 安装dubbo-admin dubbo-admin是dubbo管理控…
在Dubbo服务发布的整体流程一文中,只是分析了服务发布的整体流程,具体的细节还没有进一步分析.本节将继续分析服务暴露的过程.在ServiceConfig中通过一句话即可暴露服务,如下: Exporter<?> exporter = protocol.export(invoker); 此时Invoker对象携带的URL信息中定义的是"registry",则此处"protocol"加载的是RegistryProtocol对象.也即调用RegistryPro…
1.版本 dubbo 2.6.2 2.描述 消费者调用dubbo rest服务报No provider available for the service错误 网络上有讲是实体类未实现Serializable导致的问题,但我的是已实现Serializable,排除这个问题 3.解决(两种可能) 3.1.缺少 resteasy-client jar包导致的问题(我遇到的是这个问题) <!-- 没有这个包报 No provider available for the service 异常--> &…
1.源码版本:2.6.1 源码demo中采用的是xml式的发布方式,在dubbo的 DubboNamespaceHandler 中定义了Spring Framework 的扩展标签,即 <dubbo:service> 等,dubbo通过DubboBeanDefinitionParser将不同的标签分别解析到不同的bean中, application 对应ApplicationConfig registry 对应RegistryConfig monitor 对应MonitorConfig pro…
服务端发布流程: dubbo 是基于 spring 配置来实现服务的发布的,对于dubbo 配置文件中看到的<dubbo:service>等标签都是服务发布的重要配置 ,对于这些提供可配置化的支持,spring功不可没,spring提供了可拓展的Schema的支持.也就是自定义标签的使用,这样 dubbo基于这样的规范实现自己的拓展,以至于我们在项目中可以使用dubbo所定义的标签.在实现这个拓展的前提是要把spring的Core包加入项目中.具体的加载在Spring源码深度解析一书中有详细介…
最近项目上要对以前的老项目做分布式的整改,因此我专门花了点时间研究下当前比较热门的dubbo和springboot结合使用,以前使用过dubbo,但是没有与springboot结合过,在网上查了点资料,感觉要么是springboot版本过低,要么是dubbo版本过低,反正基本是千篇一律,查考价值不大.下面我们就直入主题,看下springboot+dubbo的简单使用: 首先是新建三个项目:dubbo-common:  主要存放服务发布的接口以及发布和调用端的公共对象,dubbo-provider…
一.前言 前面有说到Dubbo的服务发现机制,也就是SPI,那既然Dubbo内部实现了更加强大的服务发现机制,现在我们就来一起看看Dubbo在发现服务后需要做什么才能将服务注册到注册中心中. 二.Dubbo服务注册简介 首先需要明白的是Dubbo是依赖于Spring容器的(至于为什么在上篇博客中有介绍),Dubbo服务注册过程也是始于Spring容器发布刷新事件.而后Dubbo在接收到事件后,就会进行服务注册,整个逻辑大致分为三个部分: 1.检查参数,组装URL:服务消费方是通过URL拿到服务提…
本文转载:http://www.cnblogs.com/deerbox/archive/2013/05/13/3076248.html 环境: VS2010 sp1,.net framework 4.0,windows server 2003 x64 ,iis 6.0 症状: WCF开发测试,本地调用都正常.发布后,在浏览器中访问http://ip/Service.svc,可以正常浏览,但svcutil.exe 显示的是域名:http://域名/Service.svc. 在VS中,添加服务引用,…
通常情况下是通过Spring配置的方式去实现服务的发布,为了方便调试,我就不采用Spring配置的方式. DemoService demo = new DemoServiceImpl(); ApplicationConfig config=new ApplicationConfig("hello-world-app"); RegistryConfig reg=new RegistryConfig("127.0.0.1:2181"); reg.setProtocol(…
一.服务发布 - 原理: 首先看Dubbo日志,截取重要部分: 1)暴露本地服务 Export dubbo service com.alibaba.dubbo.demo.DemoService to local registry, dubbo version: 2.0.0, current host: 10.165.2.47 2)暴露远程服务 Export dubbo service com.alibaba.dubbo.demo.DemoService to url dubbo://10.165…
DUBBO原理.应用与面经总结 Dubbo原理和源码解析之服务暴露 Dubbo原理和源码解析之服务引用 服务发布 服务的发布总共做了以下几件事,这个也可以从日志log上看出来: 暴露本地服务 暴露远程服务 启动netty 连接zookeeper 到zookeeper注册 监听zookeeper 官方文档的服务发布图: 首先 ServiceConfig 类拿到对外提供服务的实际类 ref(如:HelloWorldImpl),然后通过 ProxyFactory 类的 getInvoker方法使用 r…
一.前言 本文讲服务发布与服务注册,服务提供者本地发布服务,然后向注册中心注册服务,将服务实现类以服务接口的形式提供出去,以便服务消费者从注册中心查阅并调用服务. 本文源码分析基于org.apache.dubbo:dubbo:2.7.2,服务端代码例子是上文的例子 如果没有Dubbo SPI的基础知识,建议先看Dubbo SPI,否则源码怎么跳转的将毫无头绪 Dubbo SPI:https://www.cnblogs.com/GrimMjx/p/10970643.html 二.服务发布 调用顺序…
目录 Dubbo 系列(05-1)服务发布 Spring Cloud Alibaba 系列目录 - Dubbo 篇 1. 背景介绍 1.1 服务暴露整体机制 2. 源码分析 2.1 前置工作 2.2 服务发布 Dubbo 系列(05-1)服务发布 Spring Cloud Alibaba 系列目录 - Dubbo 篇 1. 背景介绍 相关文档推荐: Dubbo 实战 - API 配置 Dubbo 源码解析 - 服务暴露 本章主要研究一下 Dubbo 服务暴露和服务引入的过程.Duboo 服务暴露…
引言 在使用Dubbo的时候你一定会好奇它是怎么实现RPC的,而要了解它的调用过程,必然需要先了解其服务发布/订阅的过程,本篇将详细讨论Dubbo的发布过程. 源码分析 发布服务 新学Dubbo大都会比较疑惑,服务启动时的入口在哪?是如何加载我们的配置的?由于Dubbo是基于Spring的自定义扩展标签来实现配置的,而发布服务时我们需要配置dubbo:service标签,因此我们可以从这里入手. 首先我们需要知道Spring的自定义扩展标签由xsd后缀的文件及spring.schemas(自定义…
dubbo版本:2.5.4 2. 服务提供者暴露一个服务的详细过程 上图是服务提供者暴露服务的主过程: 首先ServiceConfig类拿到对外提供服务的实际类ref(如:HelloWorldImpl),然后通过ProxyFactory类的getInvoker方法使用ref生成一个AbstractProxyInvoker实例,到这一步就完成具体服务到Invoker的转化.接下来就是Invoker转换到Exporter的过程. Dubbo处理服务暴露的关键就在Invoker转换到Exporter的…
dubbo版本:2.5.4 服务发布是服务提供方向注册中心注册服务过程,以便服务消费者从注册中心查阅并调用服务. 服务发布方在spring的配置文件中配置如下: <bean id="demoService"class="com.alibaba.dubbo.demo.provider.DemoServiceImpl" /> 上面是在spring中配置的服务的具体实现,是spring中的一个普通的bean. <dubbo:serviceinterfac…
我的系统是xp sp3安装TortoiseGit时出现了错误提示“您必须安装带有更新版本Windows Installer服务的Windows Service Pack”. 解决方法,到微软官方下载相应补丁即可. 补丁下载地址:http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=8483 更新补丁WindowsXP-KB942288-v3-x86.exe,然后重启安装就行了. 如果是win7用户,请下载相应版本的Windows…
上文分析了Dubbo服务发布的整体流程,但服务代理生成的具体细节介绍得还不是很详细.下面将会接着上文继续分析.上文介绍了服务代理生成的切入点,如下: Invoker<?> invoker = proxyFactory.getInvoker(ref, (Class) interfaceClass, url); 这里的proxyFactory是在ServiceConfig中定义的,是final类型静态变量,赋值后无法进行修改.如下: private static final ProxyFactor…
转载:http://blog.csdn.net/quhongwei_zhanqiu/article/details/41651205 服务发布方在spring的配置文件中配置如下: <bean id="demoService"class="com.alibaba.dubbo.demo.provider.DemoServiceImpl" /> 上面是在spring中配置的服务的具体实现,是spring中的一个普通的bean <dubbo:servic…
现互联网公司后端架构常用到Spring+SpringMVC+MyBatis,通过Maven来构建.通过学习,我已经掌握了基本的搭建过程,写下基础文章为而后的深入学习奠定基础. 首先说一下这篇文章的主要内容分为: 1.Maven多模块项目的创建: 2.Maven与SpringMVC的整合: 3.Dubbo的环境配置及与整合: 4.新手在整合过程易犯的错误. 通过一个简单的demo来说明,大家多多指教,分享经验! 一.Maven多模块项目的创建 我们需要建立一个多模块的maven项目,其目录结构为…
概念: Provider 暴露服务方称之为"服务提供者". Consumer 调用远程服务方称之为"服务消费者". Registry 服务注册与发现的中心目录服务称之为"服务注册中心". Monitor 统计服务的调用次数和调用时间的日志服务称之为"服务监控中心". 推荐更为详细解说杨老师: https://www.cnblogs.com/yjmyzz/p/dubbox-demo.html 服务定义服务是围绕服务提供方和服务消…
注:文章内容为摘录性文字,自己阅读的一些笔记,方便日后查看. 微服务(Microservices) 在过去的 2016 年和 2017 年,微服务技术迅猛普及,和容器技术一起成为这两年中最吸引眼球的技术热点.而以 Spring Cloud 为代表的传统侵入式开发框架,占据着微服务市场的主流地位. 微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地完成该任务…
  秉承站在巨人的肩膀上,同时我也不想重复制造轮子,我发现了一系列关于“分布式架构”方面,我需要,同时能够解决我的一些疑惑.问题的博客,转载过来,原文链接: http://blog.csdn.net/kobejayandy/article/details/52078275 http://blog.didispace.com/springcloud1/ http://www.jianshu.com/u/6a622d516e32 正文: 最近一段时间不论互联网还是传统行业,凡是涉及信息技术范畴的圈子…