Home > Java > javaTutorial > A distributed service framework--Dubbo instance

A distributed service framework--Dubbo instance

零下一度
Release: 2017-07-20 18:08:08
Original
2871 people have browsed it

Dubbo is a distributed service framework. Since it is a service, there must be service providers and service callers.

Next, we first write a service provider. The project still uses the project in the previous article Getting Started with Spring 4.

##We add dubbo’s dependency in pom.xml

com. alibaba
dubbo
2.5.3

Write the following class:

package com.mm.service;public interface WeatherService {public String getMessage(String city);
}
Copy after login

package com.mm.service.impl;import com.mm.service.WeatherService;public class WeatherServiceImpl implements WeatherService{

    @Overridepublic String getMessage(String city) {return city+"天气晴朗,局部有阵雨";
    }

}
Copy after login

Create a spring configuration file (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://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans                        ">
 
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="mm-weather"  />
 
    <!-- 使用multicast广播注册中心暴露服务地址 -->
    <dubbo:registry address="multicast://224.5.6.7:1234" />
 
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
 
    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.mm.service.WeatherService" ref="weatherService" />
 
    <!-- 和本地bean一样实现服务 -->
    <bean id="weatherService" class="com.mm.service.impl.WeatherServiceImpl" />
 
</beans>
Copy after login
Create a new console program for service startup

package com.mm.main.dubbo;import java.io.IOException;import org.springframework.context.support.ClassPathXmlApplicationContext;public class DubboProvider {public static void main(String[] args) throws IOException{
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"config/provider.xml"});
         context.start();
         System.in.read(); // 按任意键退出    }
}
Copy after login
Then, we started the service provider and found no error message. The service should have started successfully.

Next, we write the service caller, officially called the consumer. For convenience here, I directly copied a copy of the code to the new workspace and simply configured maven and tomcat. And delete the corresponding implementation class. The code structure is as follows:

consumer.xml file is as follows:

<?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://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beans                        ">
 
    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="mm-weather-consumer"  />
 
    <!-- 使用multicast广播注册中心暴露发现服务地址 -->
    <dubbo:registry address="multicast://224.5.6.7:1234" />
 
    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="weatherService" interface="com.mm.service.WeatherService" />
 
</beans>
Copy after login

Create a new console program, The call for the service

package com.mm.main.dubbo;import java.io.IOException;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.mm.service.WeatherService;public class DubboConsumer {public static void main(String[] args) throws IOException{
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"config/consumer.xml"});
         WeatherService  demoService = (WeatherService )context.getBean("weatherService"); // 获取远程服务代理 String hello = demoService.getMessage("北京"); // 执行远程方法 System.out.println( hello ); // 显示调用结果    }
}
Copy after login
The console output is as follows:

At the same time we are in the provider's The console will also find the following information:

Additional supplement:

Used in the spring configuration file When using dubbo tags, an error will be reported. It shouldn't actually affect it, it's probably an issue with eclipse file verification. But I felt a little unhappy, so...

First, find dubbo-2.5.3.jar in the local maven warehouse, decompress it and find the xsd file, as follows:

Open the eclipse configuration

will The value of key is changed to:

Then, right-click provider.xml and validate. After a long wait, the error message disappears.

The above is the detailed content of A distributed service framework--Dubbo instance. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template