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

2019-01-24  本文已影响0人  cjxz

dubbo入门级别的demo

直连方式

创建工程Order

项目结构.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='接口调用成功'}
上一篇下一篇

猜你喜欢

热点阅读