dubbo demo

来源:互联网 发布:域名需要购买解析吗 编辑:程序博客网 时间:2024/05/18 03:12

详细步骤:

1,下载 zookeeper3.4.8.tar.gz,解压,“终端(cmd窗口)”进入对应文件夹的bin下(F:\test\dubbo\zookeeper-3.4.8\zookeeper-3.4.8\bin), 执行 zkServer.cmd;(可另起一个终端窗口查看是否正常启动,查看方法 jps -v);

2,新建maven项目 dub-test,作为总项目(父级),pom.xml中,添加子项目并添加spring,zookeeper和dubbo的jar包;

3,新建子项目 dub-api,作为中间的接口项目,并编写测试接口TestDemoService;

4,新建子项目 dub-provider,做为服务提供者,pom.xml中引入dub-api,并实现其接口,类TestDemoServiceImpl;

5,编写provider.xml文件,放入resources文件夹下;

6,编写启动类main方法;

7,新建子项目 dub-consumer,作为服务消费者,pom.xml中引入 dub-api;

8,编写consumer.xml文件,放入resources文件夹下;

9,编写启动类main方法;


部分文件内容如下:

dub-provider  pom.xml (dub-consumer的也一样)

<parent>
        <groupId>dub-test</groupId>
        <artifactId>dub-test</artifactId>
        <version>1.0.0</version>
    </parent>
    <groupId>dub-pro</groupId>                
    <artifactId>dub-pro</artifactId>           
    <version>1.0.0</version>
    <packaging>war</packaging>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>dub-api</groupId>
            <artifactId>dub-api</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>


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:context="http://www.springframework.org/schema/context"
       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://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://code.alibabatech.com/schema/dubbo
       http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!--定义了提供方应用信息,用于计算依赖关系;在 dubbo-admin 或 dubbo-monitor 会显示这个名字,方便辨识-->
    <dubbo:application name="demotest-provider" owner="programmer" organization="dubbox"/>
    <!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!--使用 dubbo 协议实现定义好的 api.PermissionService 接口-->
    <!-- <dubbo:service interface="com.dubbo.DemoService" ref="demoService" protocol="dubbo" /> -->
    <!--具体实现该接口的 bean-->
    <!-- <bean id="demoService" class="com.dubbo.pro.DemoServiceImpl"/> -->
    
    <!-- 使用注解方式暴露接口 -->     
    <dubbo:annotation package="com.dubbo.pro" />  
    <!-- 加入spring注解扫描 -->  
    <context:component-scan base-package="com.dubbo."/>  
</beans>


provider main

public class Provider {
    @SuppressWarnings("resource")
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml");
        System.out.println(context.getDisplayName() + ": here");
        context.start();
        System.out.println("服务已经启动...");
        System.in.read();
    }
}


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="demotest-consumer" owner="programmer" organization="dubbox"/>
    <!--向 zookeeper 订阅 provider 的地址,由 zookeeper 定时推送-->
    <dubbo:registry address="zookeeper://localhost:2181"/>
    <!--使用 dubbo 协议调用定义好的 api.PermissionService 接口-->
    <dubbo:reference id="permissionService" interface="com.dubbo.DemoService"/>
</beans>


consumer main

public class Consumer {
    @SuppressWarnings("resource")
    public static void main(String[] args) {
        //测试常规服务
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml");
        context.start();
        System.out.println("consumer start");
        DemoService demoService = context.getBean(DemoService.class);
        demoService.sayHello();
        String name = demoService.getNameById("123");
        System.out.println(name);
    }
}