Maison > Java > javaDidacticiel > Une instance Dubbo de framework de services distribués

Une instance Dubbo de framework de services distribués

零下一度
Libérer: 2017-07-20 18:08:08
original
2869 Les gens l'ont consulté

Dubbo est un framework de services distribués. Puisqu'il s'agit d'un service, il doit y avoir des fournisseurs de services et des appelants de services.

Ensuite, écrivons d’abord un fournisseur de services. Le projet utilise toujours le projet de l'article précédent Mise en route avec Spring 4.

Nous ajoutons la dépendance dubbo dans pom.xml


com. /groupId>
dubbo
2.5.3

Écrivez la classe suivante :

package com.mm.service;public interface WeatherService {public String getMessage(String city);
}
Copier après la connexion

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

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

}
Copier après la connexion

Créer un nouveau fichier de configuration Spring (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>
Copier après la connexion

Créez un nouveau programme de console pour le démarrage du service

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(); // 按任意键退出    }
}
Copier après la connexion

Ensuite, nous démarrons le fournisseur de services et aucun message d'erreur n'est trouvé. Le service devrait. Cela a démarré avec succès.

Ensuite, nous écrivons à l'appelant du service, officiellement appelé le consommateur. Pour plus de commodité ici, j'ai directement copié une copie du code dans le nouvel espace de travail et j'ai simplement configuré Maven et Tomcat. Et supprimez la classe d’implémentation correspondante. La structure du code est la suivante :

le fichier consumer.xml est le suivant :

<?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>
Copier après la connexion

Créer un nouveau programme de console, utilisé pour les appels de 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 ); // 显示调用结果    }
}
Copier après la connexion

La sortie de la console est la suivante :

Parallèlement, nous Vous retrouverons également les informations suivantes dans la console du fournisseur :

Supplément supplémentaire :

au printemps Lors de l'utilisation de la balise dubbo dans le fichier de configuration, une erreur sera signalée. Cela ne devrait pas réellement l'affecter, c'est probablement un problème avec la vérification du fichier Eclipse. Mais c'était un peu désagréable, alors...

Tout d'abord, trouvez dubbo-2.5.3.jar dans l'entrepôt maven local, décompressez-le et trouvez le fichier xsd , comme suit :

Ouvrir la configuration d'éclipse

will La valeur de key est modifiée en :

Ensuite, faites un clic droit sur supplier.xml et validez. Après une longue attente, le message d'erreur disparaît.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal