dubbo入门级别的demo
直连方式
创建工程Order
- 项目结构
- dubboorder:订单项目工程
- orderapi:订单项目接口,这个里面定义接口和各种实体类
- orderprovider:订单接口的实现类,也是dubbo需要运行的项目
- dubboorder:订单项目工程

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='接口调用成功'}
网友评论