1.----------
使用Dubbo的时候需要注意返回的值需要序列化,如果是字符串,配置字符串序列化方式,如果是对象,那么需要把对象 实现序列化接口。
2.----------
关于扫描包的问题,在使用Spring、SpringMVC、Mybatis开发的时候,如果配置SpringMVC扫描器的时候,如果是客户端,那么需要先把Dubbo的包扫描放在上面,然后再把SpringMVC的包扫描放在下面即可,不然会出现注册的Service的Bean为null,详细代码如下:
<!-- 配置Dubbo应用的名称 -->
<dubbo:application name="resource"/>
<!-- 配置注册中心地址 -->
<dubbo:registry address="zookeeper://192.168.1.101:2181"/>
<!-- 配置Dubbo的包扫描-->
<dubbo:annotation package="com.resource.controller"/>
<!-- SpringMVC的Controller层的包扫描-->
<context:component-scan base-package="com.resource.controller" />
3.----------
发布的服务的接口类路径要客户端接口的类路径必须一致,不然也会访问不到,例如:服务接口AService的类路径是com.xxx.service,那么客户端的AService的类路径也必须为com.xxx.service,并且这两个类里面的结构和组成
还必须一模一样。
4.---------
关于服务接口service层的注解@Service,这里应该注意要使用com.alibaba.dubbo.config.annotation.Service这个包里面的service,不能用以前Spring的@Service,另外在客户端(即:调用服务接口的一端)在Controller层下面用发布的接口服务里面的AService的时候,这个时候不能用@Autowired或者是@Resource了,此时要用@Reference,这个是在com.alibaba.dubbo.config.annotation.Reference这个包下面的。
5. ---------
需要jar包:Dubbo和Zookeeper的
<!--dubbo及zookeeper相关依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.7</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.11.0.GA</version>
</dependency>