dubbo集成spring
1.项目依赖
<dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.5</version> </dependency>
<dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-dependencies-zookeeper</artifactId> <version>2.7.5</version> <type>pom</type> </dependency>
<dependency> <groupId>cn.wjs</groupId> <artifactId>dubbo-xml-interface</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
|
2.服务提供者
resource/spring下添加dubbo-provider.xml:
通过 Spring 配置引用远程服务
<dubbo:application metadata-type="remote" name="demo-provider"/> <dubbo:metadata-report address="zookeeper://127.0.0.1:2181"/> <!-- zk注册中心 --> <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<dubbo:protocol name="dubbo"/>
<bean id="demoService" class="cn.wjs.DemoServiceImpl"/>
<dubbo:service interface="cn.wjs.DemoService" ref="demoService"/>
|
DemoServiceImpl:
public class DemoServiceImpl implements DemoService { private static final Logger logger = LoggerFactory.getLogger(DemoServiceImpl.class);
public String sayHello(String name) { logger.info("aaa"); return "Hello " + name; }
}
|
public class Application { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/dubbo-provider.xml"); context.start(); System.in.read(); } }
|
3.服务消费者
resource/spring目录下添加dubbo-consumer.xml
通过 Spring 配置引用远程服务
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:application name="demo-consumer"/>
<dubbo:registry address="zookeeper://127.0.0.1:2181"/> <!-- 生成远程服务代理,可以和本地bean一样使用demoService --> <dubbo:reference id="demoService" check="false" interface="cn.wjs.DemoService"/>
</beans>
|
applicaiton:
public class Application { /** * In order to make sure multicast registry works, need to specify '-Djava.net.preferIPv4Stack=true' before * launch the application */ public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring/dubbo-consumer.xml"); context.start(); DemoService demoService = (DemoService) context.getBean("demoService"); // 获取远程服务代理 String hello = demoService.sayHello("world"); // 执行远程方法 System.out.println(hello); // 显示调用结果 } }
|
4.启动zookeeper注册中心
zookeeper3.4.14/bin/zkServer.sh start
5.分别启动服务端和消费端
消费者启动成功后输出: hello world
github地址:
服务端: dubbo-xml-provider
消费端: dubbo-xml-consumer
接口: dubbo-xml-interface
https://github.com/wujinsen/dubbo-learning