Dubbo入门JAVA例子

本文介绍了Dubbo这一分布式服务框架,以两个普通Java项目为例,详细阐述了服务消费方和服务提供方的demo搭建,包括代码结构、接口定义、测试代码和配置文件等。还说明了启动运行的顺序,以及对过程中出现的异常,如xml文件错误、qos server启动失败等给出处理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

     Dubbo是阿里巴巴SOA服务化治理方案的核心框架,是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架。告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册。

第一步、服务消费方demo

我这里在同一台电脑上以2个普通java项目为例来测试,接口在消费方定义打包丢入到提供方工程中,消费方工程结构如下:

定义接口的代码:

package com.test.dubbo.service;
/*
 * 测试服务接口,会打成jar包丢到提供方工程中,让提供方具体实现
 */
public interface ITestService {
	
	public String hello(String name);  

}

消费方的调用服务测试代码:

package com.test.dubbo.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.dubbo.service.ITestService;
/*
 * 消费方调用服务的测试代码
 */
public class ConsumerTest {

	public static void main(String[] args) {
		ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext("/dubbo-Consumer.xml");  
        context.start();
        ITestService demoService = (ITestService) context.getBean("demoService"); //
        String hello = demoService.hello("特朗普是我小弟"); // 
        System.out.println("消费方开始调用提供方:****************************************"+hello); //
	}
}

消费方的dubbo配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" 
	xmlns:util="http://www.springframework.org/schema/util"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/util 
    http://www.springframework.org/schema/beans/spring-util-3.0.xsd
    http://code.alibabatech.com/schema/dubbo 
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd">  
  
    <!-- 第一步:Dubbo起名称    计算用此名称来区分   -->  
    <dubbo:application name="dubbo-consumer" >
        <dubbo:parameter key="qos.enable" value="false" />
    </dubbo:application>
  
    <!-- 第二步:中介  注册中心:multicast zookeeper  redis ... -->      <dubbo:registry address="multicast://224.5.6.7:1234?unicast=false" /> 
    
    <!-- 链接超时时间  --> 
    <dubbo:consumer timeout="5000" />  
    <!-- 第三步:调用服务提供方 提供的接口 -->  
    <dubbo:reference id="demoService" interface="com.test.dubbo.service.ITestService" check="false" url="dubbo://127.0.0.1:20880"/>  
</beans>

消费方的主要代码就这么多。

 

第二步、服务提供方demo

服务提供方代码结构如下图:

服务实现类代码:

package com.test.dubbo.service.impl;
import com.test.dubbo.service.ITestService;//消费者的接口
/*
 * 服务实现接口
 */
public class TestService implements ITestService {

	@Override
	public String hello(String name) {
		 System.out.println(name);  
	     return "hello-------------- : " + name;
	}
}

测试代码:

package com.test.dubbo.test;

import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * https://www.onekbit.com
 * @author admin
 *
 */
public class ProviderTest {

	public static void main(String[] args){
		try {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("/dubbo-Provider.xml");
        context.start();  
        System.out.println("按任意键退出");  
		System.in.read();
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
}

dubbo配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" 
	xmlns:util="http://www.springframework.org/schema/util"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/util 
    http://www.springframework.org/schema/beans/spring-util-3.0.xsd
    http://code.alibabatech.com/schema/dubbo 
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> 
  
    <!-- 第一步:Dubbo起名称    计算用此名称来区分   -->
    <dubbo:application name="dubbo-provider" >
        <dubbo:parameter key="qos.enable" value="false" />
		<!-- <dubbo:parameter key="qos.accept.foreign.ip" value="false" />
		<dubbo:parameter key="qos.port" value="12345" /> -->
    </dubbo:application> 
    
    <!-- 第二步:中介  注册中心: Dubbo目前支持4种注册中心,(multicast,zookeeper,redis,simple) 推荐使用Zookeeper注册中心
        参考文章:https://www.cnblogs.com/duanxz/p/3772765.html
    -->
    <!-- 注册地址 -->  
    <dubbo:registry address="multicast://224.5.6.7:1234?unicast=false" /> 
    
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <!-- <dubbo:protocol name="dubbo" port="20880" />  -->
    
    <dubbo:protocol host="127.0.0.1"  name="dubbo" port="20880"></dubbo:protocol>
  
     <!-- 第四步:设置服务提供方 提供的接口 --> 
    <dubbo:service interface="com.test.dubbo.service.ITestService"   ref="demoService" executes="10" />  
  
    <!-- 和本地bean一样实现服务 -->  
    <bean id="demoService" class="com.test.dubbo.service.impl.TestService" />  
  
</beans>

 

第三步、启动运行

     要先启动提供方测试代码,待服务提供方启动完成后,再启动消费方测试代码,服务提供方控制台输出如下:

    

服务提供方先后2次输出

消费方输出

 

第四步、过程异常处理

1、dubbo的xml文件错误提示cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element处理;

下载一个dubbo.xsd文件windows->preferrence->xml->xmlcatalog  add->catalog entry ->file system 选择刚刚下载的文件路径修改key值和配置文件的http://code.alibabatech.com/schema/dubbo/dubbo.xsd 如下图:

保存。。在xml文件右键validate ok解决了。

2、警告: [DUBBO] Fail to start qos server: , dubbo version: 2.7.1, current host: 10.99.20.124 java.net.BindException: Address already in use: bind 

   可以先关闭qos server,在服务提供方xml文件中加入以下配置

<dubbo:application name="dubbo-provider" >
        <dubbo:parameter key="qos.enable" value="false" />
    </dubbo:application>

在消费者方xml文件中加入以下配置:

<dubbo:application name="dubbo-consumer" >
        <dubbo:parameter key="qos.enable" value="false" />
    </dubbo:application>

 

3、其他错误处理陆续更新中。。。。

 

 

由onekbit自定义导航整理发布

原文链接:https://www.onekbit.com/ViewBlog/blog/BID20190416100116

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值