1.将服务者提供到注册中心(暴露服务)
(1)导入dubbo依赖(2.6.2)(maven的pom文件中)
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency>
<!-- 注册中心使用的是zookeeper,引入操作zookeeper的客户端 -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
(2)配置provider.xml文件
<!-- 1.指定当前服务/应用的名字(同样的服务名字相同,不要和别的服务同名) -->
<dubbo:application name="user-service-provider"></dubbo:application>
<!-- 2.指定注册中心的位置 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
<!-- 3.指定通信规则(通信协议?通信端口) -->
<dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
<!-- 4.暴露服务 ref:指向服务的真正实现对象-->
<dubbo:service interface="com.feng.gmall.service.UserService" ref="userServiceImpl"></dubbo:service>
<!-- 服务的实现 -->
<bean id="userServiceImpl" class="com.feng.gmall.service.impl.UserServiceImpl"></bean>
(3)初始化ioc容器,就会去注册
public class MainApplication {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext ioc = new ClassPathXmlApplicationContext("provider.xml");
ioc.start();
System.in.read();
}
}
(4)发现dubbo控制台就出现了一个提供者,提供者注册成功!
2.消费者订阅 注册中心
(1)导入dubbo依赖(2.6.2)(maven的pom文件中)
<!-- dubbo -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency>
<!-- 注册中心使用的是zookeeper,引入操作zookeeper的客户端 -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
(2)配置consumer.xml文件
<dubbo:application name="order-service-consumer"></dubbo:application>
<dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry>
<!-- 声明需要调用的远程服务的接口,生成远程服务代理 -->
<dubbo:reference interface="com.feng.gmall.service.UserService" id="userService"></dubbo:reference>
这里的reference其实就相当于引用了另一个bean,只不过这个bean在另一个服务器的xml文件里。
&&注意之前提供者是service暴露服务,消费者是reference指向暴露的服务。
<dubbo:service interface="com.feng.gmall.service.UserService" ref="userServiceImpl">
(3)初始化ioc容器,调用对应的服务。
public class MainApplication {
@SuppressWarnings("resource")
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("consumer.xml");
OrderService orderService = applicationContext.getBean(OrderService.class);
orderService.initOrder("1");
System.out.println("调用完成...");
System.in.read();
}
}
(4)由此可见,消费者调用提供者成功!