- 阿里的
dubbo
在放弃维护一段时间后,又悄悄的开始维护了,并且现在进入apache
孵化。由于中途一段时间由dangdang
维护,改名dubbox
,而且更新到了2.8.5
的版本,所以在使用上可能有一定差异。所以在此写出duboo2.7.5
的入门demo
。与大家共同学习探讨 - 这篇文章默认你已经会
springMVC
和maven
一、注册中心
1.这里duboo
的使用是要配合注册中心的,我这里推荐zookeeper。
2.根据图片提示进行下载
3.解压后进入bin
目录
4.直接./zkServer.sh start
启动即可
– 其默认端口为2181
二、创建三个项目(api,provider,consumer)
api
为jar
包,提供接口供provider
和consumer
使用
api
里面只有一个接口
pom.xml
其实api
并不需要这些jar
包,这里导入是因为consumer
和provider
都需要,偷个懒
<dependencies>
<!--servlet-api-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<!--dubbo-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>2.7.5</version>
<!--这里我是用的spring5.2.0,所以排除这个包防止jar包冲突-->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--springMVC包,整合必须-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.0.RELEASE</version>
</dependency>
<!--dubbo整合spring需要的客户端-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
- consumer(消费者)为
war
包,并在pom中引用api
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>dubboTest</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<name>comsumer</name>
<artifactId>comsumer</artifactId>
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
这里的consumer
类只有一个controller
注意这里的注解不要导错包
Spring.xml
配置文件内容
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--开启扫描包(扫描到你的controller即可)-->
<context:component-scan base-package="com.az"/>
<mvc:annotation-driven/>
<!--name中的内容没有特殊含义,起个名字-->
<dubbo:application name="provider"/>
<!--protocol中内容表示用的注册中心为zookeeper,address填写你的zookeeper地址-->
<dubbo:registry protocol="zookeeper" address="192.168.200.129:2181"/>
<!--duboo的扫描包,扫描到你的referen注解即可-->
<dubbo:annotation package="com.az"/>
</beans>
web.xml中将dispatcherservlet
配置好即可
provider
(供应者)为war
包,在pom
中引用api
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--8-03-28 08:04:16Z reinhard $ -->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<artifactId>dubboTest</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>war</packaging>
<name>provider</name>
<dependencies>
<dependency>
<groupId>org.example</groupId>
<artifactId>api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<artifactId>provider</artifactId>
</project>
provider
中只有一个api
的实现类,并加上@Service
注解
applicationContext.xml
内容
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:application name="provider"/>
<dubbo:registry protocol="zookeeper" address="192.168.200.129:2181"/>
<dubbo:annotation package="com.az.imp"/>
</beans>
web.xml内容
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!--通过这个监听器加载配置文件的内容即可-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/applicationContext.xml</param-value>
</context-param>
</web-app>
三、开始测试
1.为cosumer
和provider
各配置一个tomcat
启动
2. 根据你的consumer
的mapping
进行测试
到这里就已经测试成功了,
返回两个问好是因为没有进行编码处理
在consumer
中进行编码处理即可