新建一个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控制台看到相关信息
时间: 2024-11-13 03:28:51