0


dubbo + zookeeper + 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:p=“http://www.springframework.org/schema/p”

xmlns:dubbo=“http://code.alibabatech.com/schema/dubbo”

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

http://code.alibabatech.com/schema/dubbo

http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<dubbo:application name=“service3_provider” />

<dubbo:registry address=“zookeeper://120.25.162.6:2181” />

<dubbo:protocol name=“dubbo” port=“20884” />

<dubbo:service interface=“com.dubbo.service3.Test1Service3” ref=“test1Service3” />

5.1 启动spring 容器 ;java代码启动


provder3.java

import org.springframework.context.support.ClassPathXmlApplicationContext;

/**

  • Created by shirenchuang on 2017/3/16.

*/

public class Provider3 {

public static void main(String[] args) throws Exception {

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(

new String[] {“provider.xml”});

context.start();

System.in.read(); // 按任意键退出

}

}

5.2 也可以部署到tomcat 中去;那就要配置一下 web.xml 文件了


例如:看 dubbo-service1_1-project 的配置文件

里面的那些配置文件就不贴出来了 ;下载源代码看就行了 ;

最好可以打包成war 部署到tomcat 中 也是一样的效果

6.步骤5.1 或者5.2 部署成功之后的效果 ,打开dubbo-admin 查看


7. 服务注册成功了 ,那么怎么使用呢?


三 . 如何消费 提供者提供的服务----消费者

============================

刚刚发布了 service3 ,并且保持它一直在启动状态(不要把provder3 停止就行了)

可以在dubbo-admin 看到它是没有消费者的,现在我们在 Controller 层来消费它;

  1. Controller 的配置

web.xml

dispatcher

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:applicationContext.xml

0

spring-mvc.xml 开启自动扫描
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns=“http://www.springframework.org/schema/beans”

xmlns:context=“http://www.springframework.org/schema/context”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns:mvc=“http://www.springframework.org/schema/mvc”

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

<context:component-scan base-package=“com.dubbo” />

<mvc:annotation-driven />

dubbo-config.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://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=“test_consumer” />

<dubbo:registry address=" " />

<dubbo:reference interface=“com.dubbo.service3.Test1Service3” id=“test1Service3” check=“false” />

配置 了需要消费的服务 service3 ;然后在Controller 中 就可以自己 通过注解 @Autowired 使用

@Autowired

private Test1Service3 test1Service3;

@RequestMapping(value = “/test3”)

@ResponseBody

public String test3(){

return test1Service3.test1Service3_1();

}

2.1 tomcat启动服务…


请求接口…

启动完了可以看到的是 服务 显示正常 表示 有提供者 又有消费者呢 ;

注意 如果注册中心 没有注册成功的话 启动会报错

2.2 本地 测试调用远程服务


comsumer.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://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=“service2_consumer” />

<dubbo:registry address=“zookeeper://120.25.162.6:2181” />

<dubbo:reference id=“test1Service3” interface=“com.dubbo.service3.Test1Service3” />

comsumer2.java

public class Consumer2 {

public static void main(String[] args) throws Exception {

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]

{“consumer.xml”});

context.start();

Test1Service3 test1Service3 = (Test1Service3)context.getBean(“test1Service3”); // 获取远程服务代理

String s = test1Service3.test1Service3_1(); // 执行远程方法

System.out.print(“end…”+s);

}

}

String s = test1Service3.test1Service3_1();

打个断点,然后去dubbo-admin 看 可以发现 出现消费者;

放掉断点 ,消费者消失;并且 打印结果:end…test1Service3_1…

===

四. 服务之间相互调用,每个服务既是消费者 又是提供者

============================

  1. 整体怎么配置

看服务 service1 ; 既是提供者 ,又是消费者 ;

Test1Service1Impl 文件

package com.dubbo.service1.impl;

import com.dubbo.service1.Test1Service1;

import com.dubbo.service1.Test2Service1;

import com.dubbo.service2.Test1Service2;

import com.dubbo.service3.Test1Service3;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

/**

  • Created by shirenchuang on 2017/3/16.

*/

@Service

public class Test1Service1Impl implements Test1Service1{

@Autowired

private Test1Service3 test1Service3;

@Autowired

private Test2Service1 test2Service1 ;

public String test1Service1_1() {

String s = test1Service3.test1Service3_1();

return s+“test1Service1_1…”;

}

public String test1Service1_2() {

return “test1Service1_2…”;

}

public String test11_21(){

String s = test2Service1.test2Service1_1();

return “Test1Service1Impl 测试本地服务 是调用本地还是调用 远程:”+s;

}

}

看代码 可以知道 它 消费了 服务 Service3 ,还有服务Service1 中的 Test2Service1Impl (同一个服务中有多个 类 ,这里不去谈论 它是本地调用还是 远程调用的问题)

我们来看看所有的配置

we b.xml
<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xmlns=“http://java.sun.com/xml/ns/javaee” xmlns:web=“http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”

xsi:schemaLocation=“http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”

id=“WebApp_ID” version=“2.5”>

dubbo-service1_1-project

index.html

index.htm

index.jsp

org.springframework.web.context.ContextLoaderListener

contextConfigLocation

classpath:applicationContext.xml

applicationContext.xml

dubbo-provider.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:p=“http://www.springframework.org/schema/p”

xmlns:dubbo=“http://code.alibabatech.com/schema/dubbo”

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

http://code.alibabatech.com/schema/dubbo

http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<dubbo:application name=“service1_provider” />

<dubbo:registry address=“zookeeper://120.25.162.6:2181” />

<dubbo:protocol name=“dubbo” port=“20886” />

最后

金三银四到了,送上一个小福利!

image.png

image.png

专题+大厂.jpg

ans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd

http://code.alibabatech.com/schema/dubbo

http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

<dubbo:application name=“service1_provider” />

<dubbo:registry address=“zookeeper://120.25.162.6:2181” />

<dubbo:protocol name=“dubbo” port=“20886” />

最后

金三银四到了,送上一个小福利!

[外链图片转存中…(img-L5WCBjXL-1714287101382)]

[外链图片转存中…(img-c0SCumev-1714287101382)]

[外链图片转存中…(img-1sTEfybn-1714287101382)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录


本文转载自: https://blog.csdn.net/ling_y_u_n/article/details/138278484
版权归原作者 ling_y_u_n 所有, 如有侵权,请联系我们删除。

“dubbo + zookeeper + spring 分布式系统(二)”的评论:

还没有评论