• DubboDemo(直连)测试代码


    1,首先,了解dubbo直连的过程原理:

    就是provider提供一个服务器地址,consumer直接调用已经指定的服务器地址,即可直连成功;不需要注册中心注册地址;

    2,环境搭配:

    系统:win10, IDEA,java 8, Maven : apache-maven-3.5.3, tomcat 7: apache-tomcat-7.0.86

    环境变量配置可以参考前面一篇 ” windows10环境搭载 “ 文章;

    检查一下,环境配置的是否正确,可以用cmd命令行测试:

    mvn -version 回车,查看版本号,和jdk版本号;

    3, 创建两个项目:DubboDemoProvider和DubboDemoConsumer两个项目,

    DubboDemoProvider项目:

    **(1)**创建一个maven项目,设置配置文件如下:

    需要在maven工程文件pom.xml中加入dubbo的依赖,dubbo版本号选2.5.8.


    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/xsd/maven-4.0.0.xsd”>
    4.0.0
    DubboDemoProvider
    DubboDemoProvider
    1.0-SNAPSHOT
    war
    DubboDemoProvider Maven Webapp

    http://www.example.com
    UTF-8
    1.7
    1.7

    junit
    junit
    4.11
    test

    com.alibaba dubbo 2.5.8 org.springframework spring-context 4.3.7.RELEASE org.springframework spring-core 4.3.7.RELEASE DubboDemoProvider maven-clean-plugin 3.0.0 maven-resources-plugin 3.0.2 maven-compiler-plugin 3.7.0 maven-surefire-plugin 2.20.1 maven-war-plugin 3.2.0 maven-install-plugin 2.5.2 maven-deploy-plugin 2.8.2

    注意这里的spring版本号的问题要是4.3.7的!!!然后自动添加依赖,更新索引版本号;

    (2)然后,创建各种目录结构;如下图所示;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QmCkkn5L-1660433871094)(http://wiki.lianjia.com/download/attachments/236782022/1.png?version=1&modificationDate=1526271796000&api=v2 “李知音 > DubboDemo(直连)]测试代码 > 1.png”)

    注意:上述的目录结构要一致,比如:java要设置resource ; resources要设置resources; webapp先不用管;

    在src/main/java/目录下创建包名:叫做com.lianjia.DubboDemo.DubboDemoProvider此时的包名要与DubboDemoConsumer的包名一致;

    (3),然后在包下创建一个接口DemoService和一个实现类DemoServiceImpl ,两个文件的代码如下:

    DemoService.java

    package com.lianjia.DubboDemo.DubboDemoProvider;
    /**
    * @Aauthor:
    * @Date:2018/5/1113:58
    * @Description:
    */
    public interface DemoService {

     String HelloWorld();
    
    • 1

    }

    DemoServiceImpl.class

    package com.lianjia.DubboDemo.DubboDemoProvider;
    import org.springframework.stereotype.Service;
    /**
    * @Aauthor:
    * @Date:2018/5/1114:00
    * @Description:
    */
    @Service
    public class DemoServiceImpl implements DemoService {

    @Override
    
    • 1

    public String HelloWorld() {
    return “HelloWorld”;
    }
    }

    (4),然后创建一个Provider类;代码如下:

    package com.lianjia.DubboDemo.DubboDemoProvider;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import java.io.IOException;
    /**
    * @Aauthor:
    * @Date:2018/5/1114:03
    * @Description:
    */
    public class Provider {
    public static void main(String[] args) throws IOException

    {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                new String\[\]{"dubbo-demo-provider.xml"}
        );
    
    • 1
    • 2
    • 3
    • 4

    context.start();
    System.in.read();
    }
    }

    (5)dubbo-spring服务配置文件:dubbo-demo-provider.xml 放在resources 目录下;


    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”>





    注意上面的小细节:

    这个部分,直连的address是"N/A", 而连接zookeeper的时候要写服务器地址;

    记住端口号:20880;

    interface和class要找到对应的路径;

    最后将配置好的DubboDemoProvider项目用maven打包好,命名规则:包名+版本号;

    放在C:Userslianjia.m2 epositorycomlianjiaDubboDemoDubboDemoProvider.0-SNAPSHOT这个路径下:

    如下图所示:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N6SenlpV-1660433871094)(http://wiki.lianjia.com/download/attachments/236782022/3.png?version=1&modificationDate=1526273071000&api=v2 “李知音 > DubboDemo(直连)]测试代码 > 3.png”)

    DubboDemoConsumer项目:

    **(1)**创建一个maven项目,设置配置文件如下:

    需要在maven工程文件pom.xml中加入dubbo的依赖,dubbo版本号选2.5.8.

    此外注意的是,要增加对dubbo和DubboDemoProvider工程的依赖;

    代码如下:


    xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
    4.0.0
    DubboDemoConsumer
    DubboDemoConsumer
    1.0-SNAPSHOT
    war
    DubboDemoConsumer Maven Webapp

    http://www.example.com
    UTF-8
    1.7
    1.7

    junit
    junit
    4.11
    test

    com.alibaba dubbo 2.5.8 com.lianjia.DubboDemo DubboDemoProvider 1.0-SNAPSHOT org.springframework spring-context 4.3.7.RELEASE DubboDemoConsumer maven-clean-plugin 3.0.0 maven-resources-plugin 3.0.2 maven-compiler-plugin 3.7.0 maven-surefire-plugin 2.20.1 maven-war-plugin 3.2.0 maven-install-plugin 2.5.2 maven-deploy-plugin 2.8.2

    (2)然后,创建各种目录结构;如下图所示;

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mSQwXgyG-1660433871096)(http://wiki.lianjia.com/download/attachments/236782022/image2018-5-14%2012%3A37%3A42.png?version=1&modificationDate=1526272804000&api=v2 “李知音 > DubboDemo(直连)]测试代码 > image2018-5-14 12:37:42.png”)

    注意:上述的目录结构要一致,同Provider一样,比如:java要设置resource ; resources要设置resources; webapp先不用管;

    在src/main/java/目录下创建包名:叫做com.lianjia.DubboDemo.DubboDemoProvider此时的包名要与DubboDemoProvider的包名一致;

    将打包好的jar的路径也要和上述的路径保持一致;

    (3),然后在包下创建一个类Consumer,文件的代码如下:

    package com.lianjia.DubboDemo.DubboDemoProvider;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    /**
    * @Aauthor:
    * @Date:2018/5/1114:47
    * @Description:
    */
    public class Consumer {
    public static void main(String[] args) {
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
    new String[]{“dubbo-demo-consumer.xml”}
    );
    context.start();
    DemoService demoService = (DemoService) context.getBean(“demoService”);
    // execute remote invocation
    String Result = demoService.HelloWorld();
    // show the result
    System.out.println(Result);
    }
    }

    (4)spring服务配置文件 dubbo-demo-consumer.xml 放到resources下:


    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”>


    4,启动项目测试!

    (1)启动项目:DubboDemoProvider

    运行 Provider.java 之后;出现如下界面:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pMOgBasm-1660433871096)(http://wiki.lianjia.com/download/attachments/236782022/4.jpg?version=1&modificationDate=1526278142000&api=v2 “李知音 > DubboDemo(直连)]测试代码 > 4.jpg”)

    D:ProgramFilesjdk8injava.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:64916,suspend=y,server=n -server -Xms800m -Xmx800m -XX:PermSize=256m -javaagent:C:Userslianjia.IntelliJIdea2018.1systemcaptureAgentdebugger-agent.jar=file:/C:/Users/lianjia/AppData/Local/Temp/capture3210.props -Dfile.encoding=UTF-8 -classpath “D:ProgramFilesjdk8jrelibcharsets.jar;D:ProgramFilesjdk8jrelibdeploy.jar;D:ProgramFilesjdk8jrelibextaccess-bridge-64.jar;D:ProgramFilesjdk8jrelibextcldrdata.jar;D:ProgramFilesjdk8jrelibextdnsns.jar;D:ProgramFilesjdk8jrelibextjaccess.jar;D:ProgramFilesjdk8jrelibextjfxrt.jar;D:ProgramFilesjdk8jrelibextlocaledata.jar;D:ProgramFilesjdk8jrelibext ashorn.jar;D:ProgramFilesjdk8jrelibextsunec.jar;D:ProgramFilesjdk8jrelibextsunjce_provider.jar;D:ProgramFilesjdk8jrelibextsunmscapi.jar;D:ProgramFilesjdk8jrelibextsunpkcs11.jar;D:ProgramFilesjdk8jrelibextzipfs.jar;D:ProgramFilesjdk8jrelibjavaws.jar;D:ProgramFilesjdk8jrelibjce.jar;D:ProgramFilesjdk8jrelibjfr.jar;D:ProgramFilesjdk8jrelibjfxswt.jar;D:ProgramFilesjdk8jrelibjsse.jar;D:ProgramFilesjdk8jrelibmanagement-agent.jar;D:ProgramFilesjdk8jrelibplugin.jar;D:ProgramFilesjdk8jrelib esources.jar;D:ProgramFilesjdk8jrelib t.jar;D:IDEAWorkSpaceDubboDemoDubboDemoProvider argetclasses;C:Userslianjia.m2 epositorycomalibabadubbo.5.8dubbo-2.5.8.jar;C:Userslianjia.m2 epositoryorgspringframeworkspring-beans.3.10.RELEASEspring-beans-4.3.10.RELEASE.jar;C:Userslianjia.m2 epositoryorgspringframeworkspring-web.3.10.RELEASEspring-web-4.3.10.RELEASE.jar;C:Userslianjia.m2 epositoryorgjavassistjavassist.20.0-GAjavassist-3.20.0-GA.jar;C:Userslianjia.m2 epositoryorgjboss etty etty.2.5.Final etty-3.2.5.Final.jar;C:Userslianjia.m2 epositoryorgspringframeworkspring-context.3.7.RELEASEspring-context-4.3.7.RELEASE.jar;C:Userslianjia.m2 epositoryorgspringframeworkspring-aop.3.7.RELEASEspring-aop-4.3.7.RELEASE.jar;C:Userslianjia.m2 epositoryorgspringframeworkspring-expression.3.7.RELEASEspring-expression-4.3.7.RELEASE.jar;C:Userslianjia.m2 epositoryorgspringframeworkspring-core.3.7.RELEASEspring-core-4.3.7.RELEASE.jar;C:Userslianjia.m2 epositorycommons-loggingcommons-logging.2commons-logging-1.2.jar;D:ProgramFilesIntelliJ IDEA 2018.1.2libidea_rt.jar” com.lianjia.DubboDemo.DubboDemoProvider.Provider
    Connected to the target VM, address: ‘127.0.0.1:64916’, transport: ‘socket’
    五月 14, 2018 1:30:19 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
    信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@327471b5: startup date [Mon May 14 13:30:19 CST 2018]; root of context hierarchy
    五月 14, 2018 1:30:19 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    信息: Loading XML bean definitions from class path resource [dubbo-demo-provider.xml]
    五月 14, 2018 1:30:19 下午 com.alibaba.dubbo.common.logger.LoggerFactory info
    信息: using logger: com.alibaba.dubbo.common.logger.jcl.JclLoggerAdapter
    五月 14, 2018 1:30:20 下午 com.alibaba.dubbo.config.AbstractConfig info
    信息: [DUBBO] The service ready on spring started. service: com.lianjia.DubboDemo.DubboDemoProvider.DemoService, dubbo version: 2.5.8, current host: 127.0.0.1
    五月 14, 2018 1:30:21 下午 com.alibaba.dubbo.config.AbstractConfig info
    信息: [DUBBO] Export dubbo service com.lianjia.DubboDemo.DubboDemoProvider.DemoService to local registry, dubbo version: 2.5.8, current host: 127.0.0.1
    五月 14, 2018 1:30:21 下午 com.alibaba.dubbo.config.AbstractConfig info
    信息: [DUBBO] Export dubbo service com.lianjia.DubboDemo.DubboDemoProvider.DemoService to urldubbo://10.33.73.254:20880/com.lianjia.DubboDemo.DubboDemoProvider.DemoService?anyhost=true&application=demo-provider&bind.ip=10.33.73.254&bind.port=20880&dubbo=2.5.8&generic=false&interface=com.lianjia.DubboDemo.DubboDemoProvider.DemoService&methods=HelloWorld&pid=3584&side=provider×tamp=1526275820828, dubbo version: 2.5.8, current host: 127.0.0.1
    五月 14, 2018 1:30:21 下午 com.alibaba.dubbo.remoting.transport.AbstractServer info
    信息: [DUBBO] Start NettyServer bind /0.0.0.0:20880, export /10.33.73.254:20880, dubbo version: 2.5.8, current host: 127.0.0.1
    五月 14, 2018 1:30:50 下午 com.alibaba.dubbo.remoting.transport.AbstractServer warn
    警告: [DUBBO] All clients has discontected from /10.33.73.254:20880. You can graceful shutdown now., dubbo version: 2.5.8, current host: 127.0.0.1
    五月 14, 2018 1:30:50 下午 com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol info
    信息: [DUBBO] disconected from /10.33.73.254:64943,url:dubbo://10.33.73.254:20880/com.lianjia.DubboDemo.DubboDemoProvider.DemoService?anyhost=true&application=demo-provider&bind.ip=10.33.73.254&bind.port=20880&channel.readonly.sent=true&codec=dubbo&dubbo=2.5.8&generic=false&heartbeat=60000&interface=com.lianjia.DubboDemo.DubboDemoProvider.DemoService&methods=HelloWorld&pid=3584&side=provider×tamp=1526275820828, dubbo version: 2.5.8, current host: 127.0.0.1

    (2)启动项目:DubboDemoConsumer

    运行 Consumer.java之后,出现如下界面:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HBFRh0Sf-1660433871097)(http://wiki.lianjia.com/download/attachments/236782022/image2018-5-14%2014%3A9%3A35.png?version=1&modificationDate=1526278317000&api=v2 “李知音 > DubboDemo(直连)]测试代码 > image2018-5-14 14:9:35.png”)

    D:ProgramFilesjdk8injava.exe -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:64932,suspend=y,server=n -javaagent:C:UserslianjiaAppDataLocalTempcapture4889jarsdebugger-agent.jar=file:/C:/Users/lianjia/AppData/Local/Temp/capture3257.props -Dfile.encoding=UTF-8 -classpath “D:ProgramFilesjdk8jrelibcharsets.jar;D:ProgramFilesjdk8jrelibdeploy.jar;D:ProgramFilesjdk8jrelibextaccess-bridge-64.jar;D:ProgramFilesjdk8jrelibextcldrdata.jar;D:ProgramFilesjdk8jrelibextdnsns.jar;D:ProgramFilesjdk8jrelibextjaccess.jar;D:ProgramFilesjdk8jrelibextjfxrt.jar;D:ProgramFilesjdk8jrelibextlocaledata.jar;D:ProgramFilesjdk8jrelibext ashorn.jar;D:ProgramFilesjdk8jrelibextsunec.jar;D:ProgramFilesjdk8jrelibextsunjce_provider.jar;D:ProgramFilesjdk8jrelibextsunmscapi.jar;D:ProgramFilesjdk8jrelibextsunpkcs11.jar;D:ProgramFilesjdk8jrelibextzipfs.jar;D:ProgramFilesjdk8jrelibjavaws.jar;D:ProgramFilesjdk8jrelibjce.jar;D:ProgramFilesjdk8jrelibjfr.jar;D:ProgramFilesjdk8jrelibjfxswt.jar;D:ProgramFilesjdk8jrelibjsse.jar;D:ProgramFilesjdk8jrelibmanagement-agent.jar;D:ProgramFilesjdk8jrelibplugin.jar;D:ProgramFilesjdk8jrelib esources.jar;D:ProgramFilesjdk8jrelib t.jar;D:IDEAWorkSpaceDubboDemoConsumer argetclasses;C:Userslianjia.m2 epositorycomalibabadubbo.5.8dubbo-2.5.8.jar;C:Userslianjia.m2 epositoryorgspringframeworkspring-beans.3.10.RELEASEspring-beans-4.3.10.RELEASE.jar;C:Userslianjia.m2 epositoryorgspringframeworkspring-web.3.10.RELEASEspring-web-4.3.10.RELEASE.jar;C:Userslianjia.m2 epositoryorgjavassistjavassist.20.0-GAjavassist-3.20.0-GA.jar;C:Userslianjia.m2 epositoryorgjboss etty etty.2.5.Final etty-3.2.5.Final.jar;C:Userslianjia.m2 epositorycomlianjiaDubboDemoDubboDemoProvider.0-SNAPSHOTDubboDemoProvider-1.0-SNAPSHOT.jar;C:Userslianjia.m2 epositoryorgspringframeworkspring-context.3.7.RELEASEspring-context-4.3.7.RELEASE.jar;C:Userslianjia.m2 epositoryorgspringframeworkspring-aop.3.7.RELEASEspring-aop-4.3.7.RELEASE.jar;C:Userslianjia.m2 epositoryorgspringframeworkspring-core.3.7.RELEASEspring-core-4.3.7.RELEASE.jar;C:Userslianjia.m2 epositorycommons-loggingcommons-logging.2commons-logging-1.2.jar;C:Userslianjia.m2 epositoryorgspringframeworkspring-expression.3.7.RELEASEspring-expression-4.3.7.RELEASE.jar;D:ProgramFilesIntelliJ IDEA 2018.1.2libidea_rt.jar” com.lianjia.DubboDemo.DubboDemoProvider.Consumer
    Connected to the target VM, address: ‘127.0.0.1:64932’, transport: ‘socket’
    五月 14, 2018 1:30:48 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
    信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@90f6bfd: startup date [Mon May 14 13:30:48 CST 2018]; root of context hierarchy
    五月 14, 2018 1:30:48 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
    信息: Loading XML bean definitions from class path resource [dubbo-demo-consumer.xml]
    五月 14, 2018 1:30:49 下午 com.alibaba.dubbo.common.logger.LoggerFactory info
    信息: using logger: com.alibaba.dubbo.common.logger.jcl.JclLoggerAdapter
    五月 14, 2018 1:30:50 下午 com.alibaba.dubbo.remoting.transport.AbstractClient info
    信息: [DUBBO] Successed connect to server /10.33.73.254:20880 from NettyClient 10.33.73.254 using dubbo version 2.5.8, channel is NettyChannel [channel=[id: 0x2f62ea70, /10.33.73.254:64943 => /10.33.73.254:20880]], dubbo version: 2.5.8, current host: 10.33.73.254
    五月 14, 2018 1:30:50 下午 com.alibaba.dubbo.remoting.transport.AbstractClient info
    信息: [DUBBO] Start NettyClient PC-PC0UA6PD/10.33.73.254 connect to the server /10.33.73.254:20880, dubbo version: 2.5.8, current host: 10.33.73.254
    五月 14, 2018 1:30:50 下午 com.alibaba.dubbo.config.AbstractConfig info
    信息: [DUBBO] Refer dubbo service com.lianjia.DubboDemo.DubboDemoProvider.DemoService from urldubbo://10.33.73.254:20880/com.lianjia.DubboDemo.DubboDemoProvider.DemoService?application=demo-consumer&dubbo=2.5.8&interface=com.lianjia.DubboDemo.DubboDemoProvider.DemoService&methods=HelloWorld&pid=8724®ister.ip=10.33.73.254&revision=1.0-SNAPSHOT&side=consumer×tamp=1526275849847, dubbo version: 2.5.8, current host: 10.33.73.254
    HelloWorld
    五月 14, 2018 1:30:50 下午 com.alibaba.dubbo.config.AbstractConfig info
    信息: [DUBBO] Run shutdown hook now., dubbo version: 2.5.8, current host: 10.33.73.254
    Disconnected from the target VM, address: ‘127.0.0.1:64932’, transport: ‘socket’

    Process finished with exit code 0

    调用之后出现了HelloWorld

    证明测试成功~~~

    代码地址:https://github.com/Zhiyin-Melody/DubboDemo

    java开发基础

  • 相关阅读:
    软件测试之自动化测试
    力扣(LeetCode)334. 最大 BST 子树(2022.12.01)
    怎么学习前端开发?求推荐学习路线?
    【C语言必知必会 | 第二篇】编译器的安装与使用
    数据分析--matplotlib绘图
    计算机网络 第一章计算机网络体系结构
    quarkus数据库篇之四:本地缓存
    52.【Java 数据结构——线性表】
    用 python popen 后台 启动 appium 之后,出现自动结束进程的情况
    【系统美化】快速打开鼠标样式切换的对话框
  • 原文地址:https://blog.csdn.net/m0_54853420/article/details/126327895