企业网站目的,学习电商运营去哪里学,学网页制作的好处,网店推广要多少钱转载自 Dubbo快速开始
Dubbo 采用全 Spring 配置方式#xff0c;透明化接入应用#xff0c;对应用没有任何 API 侵入#xff0c;只需用 Spring 加载 Dubbo 的配置即可#xff0c;Dubbo 基于 Spring 的 Schema 扩展 进行加载。
如果不想使用 Spring 配置#xff0c;可以…转载自 Dubbo快速开始
Dubbo 采用全 Spring 配置方式透明化接入应用对应用没有任何 API 侵入只需用 Spring 加载 Dubbo 的配置即可Dubbo 基于 Spring 的 Schema 扩展 进行加载。
如果不想使用 Spring 配置可以通过 API 的方式 进行调用。
服务提供者
完整安装步骤请参见示例提供者安装
安装
git clone https://github.com/apache/dubbo.git
cd dubbo/dubbo-demo/dubbo-demo-xml
运行 dubbo-demo-xml-provider中的org.apache.dubbo.demo.provider.Application
如果使用Intellij Idea 请加上-Djava.net.preferIPv4Stacktrue配置
resources/spring/dubbo-provider.xml
修改其中的dubbo:registry替换成真实的注册中心地址推荐使用zookeeper如
dubbo:registry addresszookeeper://127.0.0.1:2181/定义服务接口
DemoService.java 1
package org.apache.dubbo.demo;public interface DemoService {String sayHello(String name);
}在服务提供方实现接口
DemoServiceImpl.java 2 package org.apache.dubbo.demo.provider;import org.apache.dubbo.demo.DemoService;public class DemoServiceImpl implements DemoService {public String sayHello(String name) {return Hello name;}
}用 Spring 配置声明暴露服务
provider.xml
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:dubbohttp://dubbo.apache.org/schema/dubboxsi:schemaLocationhttp://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 namehello-world-app /!-- 使用multicast广播注册中心暴露服务地址 --dubbo:registry addressmulticast://224.5.6.7:1234 /!-- 用dubbo协议在20880端口暴露服务 --dubbo:protocol namedubbo port20880 /!-- 声明需要暴露的服务接口 --dubbo:service interfaceorg.apache.dubbo.demo.DemoService refdemoService /!-- 和本地bean一样实现服务 --bean iddemoService classorg.apache.dubbo.demo.provider.DemoServiceImpl /
/beans加载 Spring 配置
Provider.java
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Provider {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(new String[]{META-INF/spring/dubbo-demo-provider.xml});context.start();System.in.read(); // 按任意键退出}
}服务消费者
完整安装步骤请参见示例消费者安装
通过 Spring 配置引用远程服务
consumer.xml
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:dubbohttp://dubbo.apache.org/schema/dubboxsi:schemaLocationhttp://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 nameconsumer-of-helloworld-app /!-- 使用multicast广播注册中心暴露发现服务地址 --dubbo:registry addressmulticast://224.5.6.7:1234 /!-- 生成远程服务代理可以和本地bean一样使用demoService --dubbo:reference iddemoService interfaceorg.apache.dubbo.demo.DemoService /
/beans加载Spring配置并调用远程服务
Consumer.java 3
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.dubbo.demo.DemoService;public class Consumer {public static void main(String[] args) throws Exception {ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(new String[] {META-INF/spring/dubbo-demo-consumer.xml});context.start();DemoService demoService (DemoService)context.getBean(demoService); // 获取远程服务代理String hello demoService.sayHello(world); // 执行远程方法System.out.println( hello ); // 显示调用结果}
}该接口需单独打包在服务提供方和消费方共享 ↩︎ 对服务消费方隐藏实现 ↩︎ 也可以使用 IoC 注入 ↩︎