阿里dubbo框架使用系列:服务提供者和消费者的创建和使用

来源:互联网 发布:工作淘宝客服怎么样 编辑:程序博客网 时间:2024/06/06 03:21

新建一个maven工程


创建一个服务接口

package com.pcx.dubbo_facade;public interface DemoService {    String sayHello(String name);}

运行 clean install打包dubbo-facade


接下来创建 dubbo-provider 工程

pom.xml里面引用刚才的服务接口的jar包

<span style="white-space:pre"></span><dependency><groupId>com.pcx</groupId>    <span style="white-space:pre"></span><artifactId>dubbo-facade</artifactId> <version>0.0.1-SNAPSHOT</version></dependency>


编写服务实现类


package com.pcx.dubbo_prodiver;import org.springframework.stereotype.Service;import com.pcx.dubbo_facade.DemoService;@Service("demoService")public class DemoServiceImpl implements DemoService {public String sayHello(String name) {return "Hello " + name;}}

在resource目录下编写两个spring配置文件

dubbo-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              http://www.springframework.org/schema/beans/spring-beans.xsd              http://code.alibabatech.com/schema/dubbo              http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 定义应用名称 --><dubbo:application name="dubbo-demo-provider" /><!--zk注册中心的地址--><dubbo:registry protocol="zookeeper" address="192.168.1.10:2181" /><!-- 用dubbo协议在21000端口暴露服务 --><dubbo:protocol name="dubbo" port="21000" /><!-- 配置服务接口 --><dubbo:service interface="com.pcx.dubbo_facade.DemoService" ref="demoService" /></beans>  

spring-context.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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans             http://www.springframework.org/schema/beans/spring-beans-3.2.xsd             http://www.springframework.org/schema/aop              http://www.springframework.org/schema/aop/spring-aop-3.2.xsd             http://www.springframework.org/schema/tx             http://www.springframework.org/schema/tx/spring-tx-3.2.xsd             http://www.springframework.org/schema/context             http://www.springframework.org/schema/context/spring-context-3.2.xsd"default-autowire="byName" default-lazy-init="false"><!-- 采用注释的方式配置bean --><context:annotation-config /><!-- 配置要扫描的包的路径 --><context:component-scan base-package="com.pcx" /><import resource="dubbo-provider.xml" /></beans>
在src/test/java路径下编写测试类启动dubbo服务

package com.pcx.dubbo_prodiver;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;public class DubboProvider {private static final Log log = LogFactory.getLog(DubboProvider.class);public static void main(String[] args) {try {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-context.xml");context.start();} catch (Exception e) {log.error("== DubboProvider context start error:",e);}synchronized (DubboProvider.class) {while (true) {try {DubboProvider.class.wait();} catch (InterruptedException e) {log.error("== synchronized error:",e);}}}}}

运行这个测试类,我们可以在dubbo控制台看到我们暴露的服务

创建一个新工程名为dobbo-consumer




在pom.xml下依赖我们的服务接口的jar包

<span style="white-space:pre"></span><dependency><groupId>com.pcx</groupId>    <artifactId>dubbo-facade</artifactId> <version>0.0.1-SNAPSHOT</version></dependency>


在src/main/resource/目录下新增两个spring配置文件

dubbo-consumer.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          http://www.springframework.org/schema/beans/spring-beans.xsd          http://code.alibabatech.com/schema/dubbo          http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 消费方应用名 --><dubbo:application name="dubbo-demo-consumer" /><!-- 填写zk注册中心的地址 --><dubbo:registry protocol="zookeeper" address="192.168.1.10:2181" /><!-- 引用服务提供接口的路径 --><dubbo:reference interface="com.pcx.dubbo_facade.DemoService" id="demoService" check="false" /></beans>  

spring-context.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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans             http://www.springframework.org/schema/beans/spring-beans-3.2.xsd             http://www.springframework.org/schema/aop              http://www.springframework.org/schema/aop/spring-aop-3.2.xsd             http://www.springframework.org/schema/tx             http://www.springframework.org/schema/tx/spring-tx-3.2.xsd             http://www.springframework.org/schema/context             http://www.springframework.org/schema/context/spring-context-3.2.xsd"><import resource="dubbo-consumer.xml" /></beans>


编写调用服务的测试类在src/test/java

package com.pcx.dubbo_consumer;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.pcx.dubbo_facade.DemoService;public class Consumer {    private static final Log log = LogFactory.getLog(Consumer.class);        public static void main(String[] args) throws InterruptedException {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:spring-context.xml");        context.start();        DemoService demoService = (DemoService)context.getBean("demoService");         String hello = demoService.sayHello("world");        log.info("打印"+hello);                      Thread.sleep(100000);    }}
运行测试类

调用成功

此时可以在dubbo控制台看到相关信息

0 0
原创粉丝点击