1.项目结构
2.公共模块
在commons模块中定义一个service接口即可
package com.biao;
public interface UserService {
String sayHello(String name);
}
3.创建provider服务提供者
3.1 pom.xml文件导入相关依赖
<dependencies>
<dependency>
<groupId>com.biao</groupId>
<artifactId>dubbo-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--添加Spring依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.6.RELEASE </version>
</dependency>
<!--添加日志依赖-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<!--Dubbo的依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<groupId>spring</groupId>
<artifactId>org.springframework</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--Zookeeper的客户端-->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
</dependencies>
3.2 添加Spring配置文件
<?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://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!--提供方应用信息,要创建的服务的名称-->
<dubbo:application name="dubboProvider"/>
<!--设置Zookeeper注册中心-->
<dubbo:registry protocol="zookeeper"
address="192.168.134.129,192.168.134.129,192.168.134.129"/>
<!--设置Dubbo使用的协议-->
<dubbo:protocol name="dubbo" port="20880"/>
<!--注入UserServiceImplement-->
<bean class="com.biao.service.UserServiceImpl" id="userService"/>
<!--声明需要对外暴露的服务-->
<dubbo:service interface="com.biao.service.UserService" ref="userService"
group="dubbo" version="1.0.0" timeout="5000"/>
</beans>
3.3 添加log4j.properties文件,方便看到日志信息
log4j.rootLogger=INFO,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
3.4 启动文件
package com.biao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AppStart {
public static void main(String[] args) throws InterruptedException {
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
//挂起当前线程
Thread.currentThread().join();
}
}
3.5 启动效果
4.创建服务消费者
4.1 pom导入依赖(和provide中的依赖是一样的)
<dependencies>
<dependency>
<groupId>com.biao</groupId>
<artifactId>dubbo-commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--添加Spring依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.6.RELEASE </version>
</dependency>
<!--添加日志依赖-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
<!--Dubbo的依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<groupId>spring</groupId>
<artifactId>org.springframework</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--Zookeeper的客户端-->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
</dependencies>
4.2 创建Spring的配置文件
<?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://code.alibabatech.com/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!--消费者应用信息-->
<dubbo:application name="dubboConsumer"/>
<!--配置和Provide相同的注册中心-->
<dubbo:registry protocol="zookeeper"
address="192.168.134.129,192.168.134.131,192.168.134.132"/>
<!--生成远程连接的服务代理-->
<dubbo:reference interface="com.biao.service.UserService" id="userService"
group="dubbo" version="1.0.0" timeout="5000"/>
</beans>
4.3 添加log4j.properties文件,方便看到日志信息
4.4 测试代码
package com.biao;
import com.biao.service.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AppStart {
public static void main(String[] args) {
ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
//获取接口的代理对象
UserService userService = (UserService) ac.getBean("userService");
System.out.println(userService.sayHello("aaa"));
}
}