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>


3.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-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>


 2. spring配置文件-spring-config.xml
<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代码。

原创粉丝点击