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

A distributed service framework--Dubbo instance

零下一度
零下一度Original
2017-07-20 18:08:082851browse

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);
}

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

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

}

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>
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(); // 按任意键退出    }
}
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>

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 ); // 显示调用结果    }
}
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!

Statement:
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