Dubbo 程序实例
来源:互联网 发布:淘宝网男运动套装 编辑:程序博客网 时间:2024/06/06 05:45
zookeeper 的安装 http://blog.csdn.net/zsg88/article/details/75127438
Dubbo 管理控制台安装 http://blog.csdn.net/zsg88/article/details/75142754
一般我们设计一个完整的dubbo应用一般分为3个部分:
模块一: 服务接口定义
模块二: 服务提供者
模块三: 服务消费者
实例在ntelliJ Idea工具下采用Maven开发,先看一下大概工程的样子,如图:
jstudio-dubbo-demo 是父工程
jstudio-dubbo-demo-api 服务接口定义模块
jstudio-dubbo-demo-provider 服务提供者模块
jstudio-dubbo-demo-consumer 服务消费者模块
一.jstudio-dubbo-demo父工程pom,定义所需依赖,spring使用的是较新版本
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.jstudioframework</groupId> <artifactId>jstudio-dubbo-demo</artifactId> <version>1.0-SNAPSHOT</version> <modules> <module>jstudio-dubbo-demo-api</module> <module>jstudio-dubbo-demo-provider</module> <module>jstudio-dubbo-demo-consumer</module> </modules> <packaging>pom</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- 使用最近较新的spring版本 --> <spring.version>4.3.7.RELEASE</spring.version> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> <exclusions> <exclusion> <!-- 去除dubbo2.5.3中自带的spring版本 --> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> </dependency> <!-- zookeeper client --> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency> <!-- spring相关 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${spring.version}</version> </dependency> </dependencies> </dependencyManagement></project>
二. jstudio-dubbo-demo-api 服务接口定义模块
1.定义一个接口 ProviderService.Java
package org.jstudioframework.dubbo.demo.service;/** * service接口层 */public interface ProviderService { public String sayHello(String name);}
2. pom.xml
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>jstudio-dubbo-demo</artifactId> <groupId>org.jstudioframework</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>jstudio-dubbo-demo-api</artifactId> <packaging>jar</packaging></project>
三. jstudio-dubbo-demo-provider 服务提供者模块
1. ProviderServiceImpl.Java 实现ProviderService服务接口
package org.jstudioframework.dubbo.demo.service.impl;import org.jstudioframework.dubbo.demo.service.ProviderService;/** * 提供者,service实现层 */public class ProviderServiceImpl implements ProviderService { public String sayHello(String name) { return "***** OH , My God!~~~~" + name + ",天下无敌,唯我独尊~~~~!!! *****"; }}
2. spring配置文件-spring-config.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"> <!-- 具体的实现bean --> <bean id="providerService" class="org.jstudioframework.dubbo.demo.service.impl.ProviderServiceImpl"/> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="dubbo_provider"/> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://192.168.43.128:2181"/> <!-- 用dubbo协议端口暴露服务 --> <dubbo:protocol name="dubbo" port="29014"/> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="org.jstudioframework.dubbo.demo.service.ProviderService" ref="providerService"/></beans>
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>jstudio-dubbo-demo</artifactId> <groupId>org.jstudioframework</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <packaging>jar</packaging> <artifactId>jstudio-dubbo-demo-provider</artifactId> <dependencies> <dependency> <groupId>org.jstudioframework</groupId> <artifactId>jstudio-dubbo-demo-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency> <!-- spring相关 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> </dependency> </dependencies></project>
4.提供者服务启动类 ProviderServiceTest.java
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.io.IOException;/** * 运行程序 */public class ProviderServiceTest { public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( new String[]{"classpath:spring/spring-config.xml"}); context.start(); System.out.println("提供者服务已注册成功"); System.out.println("请按任意键取消提供者服务"); try { System.in.read();//让此程序一直跑,表示一直提供服务 } catch (IOException e) { e.printStackTrace(); } System.out.println("消提供者服务已经停止"); }}
运行后,我们可以到注册中心去看看服务注册上去了没有。
四 . jstudio-dubbo-demo-consumer 服务消费者模块
1. pom.xml 配置
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>jstudio-dubbo-demo</artifactId> <groupId>org.jstudioframework</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <packaging>jar</packaging> <artifactId>jstudio-dubbo-demo-consumer</artifactId> <dependencies> <dependency> <groupId>org.jstudioframework</groupId> <artifactId>jstudio-dubbo-demo-api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.10</version> </dependency> <!-- spring相关 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> </dependency> </dependencies></project>
<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_consumer" /> <!-- 使用zookeeper注册中心暴露发现服务地址 --> <dubbo:registry address="zookeeper://192.168.43.128:2181"/> <!-- 生成远程服务代理,可以和本地bean一样使用 --> <dubbo:reference id="providerService" interface="org.jstudioframework.dubbo.demo.service.ProviderService" /></beans>
3. 消费者测试类 ConsumerServiceTest.java
package org.jstudioframework.dubbo.demo.consumer;import org.jstudioframework.dubbo.demo.service.ProviderService;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.io.IOException;/** * 客户端调用服务 */public class ConsumerServiceTest { public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext( new String[]{"spring/spring-config.xml"}); context.start(); ProviderService providerService = (ProviderService) context.getBean("providerService"); System.out.println(providerService.sayHello("东方不败")); System.out.println("按任意键退出."); try { System.in.read(); } catch (IOException e) { e.printStackTrace(); } }}
启动运行
到dubbo管理后台查看
一个完整的dubbo实例就完成了。所有代码都已经贴出,自己建Maven工程,复制pom.xml,spring配置和java代码。
阅读全文
2 0
- Dubbo 程序实例
- Dubbo实例
- Dubbo实例
- Dubbo实例
- Dubbo实例
- dubbo实例
- Dubbo实例
- Dubbo实例
- dubbo实例
- Dubbo入门实例
- Dubbo学习教程实例
- 阿里dubbo实例测试
- dubbo 实例详解
- Dubbo简介及实例
- Dubbo入门实例
- Dubbo入门实例
- Dubbo入门实例
- dubbo入门实例
- easyui_Datagrid 数据网格 loadData
- 1010. 一元多项式求导 (25)
- 笔记5——shell基础
- Linux----sshd服务
- 2017 多校 TrickGCD
- Dubbo 程序实例
- 为什么使用where 1 =1 或者 where 1 = 0
- iterator、for遍历集合的优缺点
- JAVA微信公众号开发之二维码的创建与获取
- 小e开发板(esp8266)连接Arduino实现WiFi扫描
- 1.7 HashMap源码分析
- 将SqlServer表转换为Markdown
- LeetCode 9. Palindrome Number
- C