本文主要是介绍Dubbo入门(一):quickStart,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
0、背景说明
本文介绍如何创建Dubbo入门程序:quickStart(zookeeper版,windows环境)。
1、工具准备
- zookeeper-3.4.12
- idea
2、项目结构图
3、契约项目:dubbo-quickStart-api,创建契约接口:
/*** 契约接口*/ public interface DemoService {String sayHello(String name); }
4、生产者项目:dubbo-quickStart-provider
1)实现契约接口,以提供服务
/*** 实现类*/ public class DemoServiceImpl implements DemoService {public String sayHello(String name) {return "hello " + name;} }
2)创建生产者,提供服务
/*** 服务的提供者*/ public class Provider {public static void main(String[] args) throws Exception{//加载配置ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"provider.xml"});//启动容器context.start();//这句话是必要的,否则Spring容器就关闭了System.in.read();} }
3)配置文件中,添加生产者描述信息
<?xml version="1.0" encoding="UTF-8"?>
<!--使用新版的schema配置-->
<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 http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!--应用名-->
<dubbo:application name="demo-provider"/>
<!--注册中心,这里使用的是zookeeper作为注册中心-->
<dubbo:registry protocol="zookeeper" address="192.168.5.223:2181"/>
<!--配置服务使用的协议及端口-->
<dubbo:protocol name="dubbo" port="20880"/>
<!--可以提供的服务-->
<bean id="demoService" class="com.thomas.DemoServiceImpl"/>
<!--暴露服务,供消费者调用-->
<dubbo:service interface="com.thomas.DemoService" ref="demoService"/>
</beans>
5、消费者项目:dubbo-quickStart-consumer
1)创建消费者,调用远程服务
/*** 消费端*/ public class Consumer {public static void main(String[] args) {//加载配置文件ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml");//启动容器context.start();//调用远程方法DemoService demoService = (DemoService) context.getBean("demoService");System.out.println(demoService.sayHello("张三"));//关闭容器context.stop();} }
2)配置文件中,添加消费者描述信息
<?xml version="1.0" encoding="UTF-8"?>
<!--使用新版的schema配置-->
<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 http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!--应用名-->
<dubbo:application name="demo-consumer"/>
<!--注册中心,这里使用的是zookeeper作为注册中心-->
<dubbo:registry protocol="zookeeper" address="192.168.5.223:2181"/>
<!--配置服务使用的协议及端口-->
<dubbo:protocol name="dubbo" port="20880"/>
<!--远程对象-->
<dubbo:reference id="demoService" interface="com.thomas.DemoService" check="true"/>
</beans>
6、搭建zookeeper服务(windows环境,单机版)
1)创建配置文件:将../conf/zoo_sample.cfg复制一份到本文件夹下,并命名为zoo.cfg
2)修改配置文件:
在配置文件中,添加如下配置
3)启动zookeeper服务:双夹../bin/zkServer.cmd文件,启动zookeeper服务。
7、运行项目
1)首先将Provider跑起来;
2)启动Consumer,检查是否成功调用了远程服务;
8、其他
1)项目完整路径,请参考:https://gitee.com/yanglin10086/dubbo/tree/master/dubbo-quickStart-zookeeper
2)zookeeper环境搭建参考了:https://blog.csdn.net/qiunian144084/article/details/79192819
3)log4j.properties文件:如果缺少该配置,就无法打印日志,但不影响功能的使用;
4)搭建过程中,碰到的问题
(1)问题:idea的provider.xml中报uri not registered
解决办法:https://blog.csdn.net/matthew_zhang/article/details/50757251
(2)问题:Offending resource: class path resource [provider.xml]
解决办法:https://blog.csdn.net/huawencai/article/details/82108175
(3)问题:Exception in thread "main" java.lang.NoClassDefFoundError: org/I0Itec/zkclient/IZkStateListener
解决办法:https://blog.csdn.net/pri_sta_pub/article/details/79087592
这篇关于Dubbo入门(一):quickStart的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!