美文网首页
01-dubbo:入门demo-直连方式

01-dubbo:入门demo-直连方式

作者: cjxz | 来源:发表于2019-01-24 14:40 被阅读0次

    dubbo入门级别的demo

    直连方式

    创建工程Order

    • 项目结构
      • dubboorder:订单项目工程
        • orderapi:订单项目接口,这个里面定义接口和各种实体类
        • orderprovider:订单接口的实现类,也是dubbo需要运行的项目
    项目结构.png
    dubboorder-orderapi
    接口
    
    package com.order;
    
    /**
     * @Author: chao.zhu
     * @description:
     * @CreateDate: 2018/08/16
     * @Version: 1.0
     */
    public interface OrderService {
        OrderResponseVO createOrder(OrderRequestVO orderRequestVO);
    }
    
    VO类
    
    public class OrderRequestVO implements Serializable {
        private static final long serialVersionUID = 1993718307053578686L;
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "OrderRequestVO{" +
                    "name='" + name + '\'' +
                    '}';
        }
    }
    public class OrderResponseVO implements Serializable {
        private static final long serialVersionUID = 3296964053375470822L;
        private Object data;
        private String code;
        private String message;
    
        public Object getData() {
            return data;
        }
    
        public void setData(Object data) {
            this.data = data;
        }
    
        public String getCode() {
            return code;
        }
    
        public void setCode(String code) {
            this.code = code;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        @Override
        public String toString() {
            return "OrderResponseVO{" +
                    "data=" + data +
                    ", code='" + code + '\'' +
                    ", message='" + message + '\'' +
                    '}';
        }
    }
    
    dubboorder-orderprovider
    接口实现类
    
    package com.order;
    
    /**
     * @Author: chao.zhu
     * @description:
     * @CreateDate: 2018/08/16
     * @Version: 1.0
     */
    public class OrderServiceImpl implements OrderService {
        @Override
        public OrderResponseVO createOrder(OrderRequestVO orderRequestVO) {
            System.out.println("请求参数:"+orderRequestVO.toString());
            OrderResponseVO vo = new OrderResponseVO();
            vo.setCode("200");
            vo.setMessage("接口调用成功");
            return vo;
        }
    }
    
    dubbo启动类
    
    package com.order;
    
    import com.alibaba.dubbo.container.Main;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * @Author: chao.zhu
     * @description:
     * @CreateDate: 2018/08/17
     * @Version: 1.0
     */
    public class StartOrder {
        public static void main(String[] args)throws Exception {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INFO.spring/order-provider.xml");
            context.start();
            System.in.read();
    //        Main.main(args);
        }
    }
    
    配置文件(目录:/resources/META-INFO.spring/order-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:dubbo="http://dubbo.apache.org/schema/dubbo"
           xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd        http://dubbo.apache.org/schema/dubbo        http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    
    
    <!-- 提供方应用信息,用于计算依赖关系 -->
        <dubbo:application name="order" />
    
        <!-- 使用multicast广播注册中心暴露服务地址 -->
        <dubbo:registry address="N/A"/>
    
        <!-- 用dubbo协议在20880端口暴露服务 -->
        <dubbo:protocol name="dubbo" port="20880"/>
    
        <!-- 声明需要暴露的服务接口 -->
        <dubbo:service interface="com.order.OrderService" ref="orderService"/>
    
        <!-- 和本地bean一样实现服务 -->
        <bean id="orderService" class="com.order.OrderServiceImpl"/>
    </beans>
    
    pom依赖
    
    <?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/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>dubbo-order</artifactId>
            <groupId>com.cjxz.dubbo.order</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>order-provider</artifactId>
    
        <dependencies>
            <dependency>
                <groupId>com.cjxz.dubbo.order</groupId>
                <artifactId>order-api</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>2.6.2</version>
            </dependency>
        </dependencies>
    
    </project>
    

    运行StartOrder.main方法

    创建user项目

    项目结构
    user-consumer.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-4.3.xsd        http://dubbo.apache.org/schema/dubbo        http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    
        <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
        <dubbo:application name="consumer-of-helloworld-app"  />
    
        <!-- 使用multicast广播注册中心暴露发现服务地址 -->
        <dubbo:registry address="N/A" />
    
        <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
        <dubbo:reference id="orderService" interface="com.order.OrderService" 
                         url="dubbo://192.168.17.136:20880/com.order.OrderService"/>
    </beans>
    
    pom文件
    
    <?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/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.cjxz.dubbo</groupId>
        <artifactId>dubbo-user</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>dubbo</artifactId>
                <version>2.6.2</version>
            </dependency>
            <dependency>
                <groupId>com.cjxz.dubbo.order</groupId>
                <artifactId>order-api</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
    
    </project>
    
    UserConsumer.java
    
    package com.user;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import com.order.OrderRequestVO;
    import com.order.OrderResponseVO;
    import com.order.OrderService;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /**
     * @Author: chao.zhu
     * @description:
     * @CreateDate: 2018/08/17
     * @Version: 1.0
     */
    public class UserConsumer {
        public static void main(String[] args) throws Exception {
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("user-consumer.xml");
            context.start();
            OrderService orderService = (OrderService)context.getBean("orderService"); // 获取远程服务代理
            OrderRequestVO vo = new OrderRequestVO();
            vo.setName("zhuchao");
            OrderResponseVO hello = orderService.createOrder(vo); // 执行远程方法
            System.out.println( hello ); // 显示调用结果
        }
    }
    

    运行结果:

    /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin/java "-javaagent:/Applications/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=60194:/Applications/IntelliJ IDEA.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/charsets.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/deploy.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/javaws.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/jce.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/jfr.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/jfxswt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/jsse.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/management-agent.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/plugin.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/resources.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/rt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/ant-javafx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/dt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/javafx-mx.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/jconsole.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/packager.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/sa-jdi.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib/tools.jar:/Users/zhuchao/workspace_my_git/mydubbo/dubbouser/target/classes:/Users/zhuchao/maven_repository/repository/com/alibaba/dubbo/2.5.3/dubbo-2.5.3.jar:/Users/zhuchao/maven_repository/repository/org/springframework/spring/2.5.6.SEC03/spring-2.5.6.SEC03.jar:/Users/zhuchao/maven_repository/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar:/Users/zhuchao/maven_repository/repository/org/javassist/javassist/3.15.0-GA/javassist-3.15.0-GA.jar:/Users/zhuchao/maven_repository/repository/org/jboss/netty/netty/3.2.5.Final/netty-3.2.5.Final.jar:/Users/zhuchao/workspace_my_git/mydubbo/dubboorder/orderapi/target/classes:/Users/zhuchao/maven_repository/repository/com/github/sgroschupf/zkclient/0.1/zkclient-0.1.jar:/Users/zhuchao/maven_repository/repository/org/apache/zookeeper/zookeeper/3.3.3/zookeeper-3.3.3.jar:/Users/zhuchao/maven_repository/repository/jline/jline/0.9.94/jline-0.9.94.jar:/Users/zhuchao/maven_repository/repository/junit/junit/3.8.1/junit-3.8.1.jar:/Users/zhuchao/maven_repository/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar com.user.UserConsumer
    objc[2070]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin/java (0x1094be4c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/libinstrument.dylib (0x10a4d74e0). One of the two will be used. Which one is undefined.
    log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
    log4j:WARN Please initialize the log4j system properly.
    OrderResponseVO{data=null, code='200', message='接口调用成功'}
    

    相关文章

      网友评论

          本文标题:01-dubbo:入门demo-直连方式

          本文链接:https://www.haomeiwen.com/subject/piuzbftx.html