dubbo hello world

dubbo的一些背景、介绍。请参考:http://dubbo.io/

本次环境:

机器2台:

192.168.0.32 windows7

192.168.0.33 centos7


所用到的软件包

centos7 所需软件包:

jdk-7u79-linux-x64.tar.gz

apache-tomcat-7.0.67.tar.gz

zookeeper-3.4.7.tar.gz

-------

dubbo-admin-2.4.1.war


windows7所需软件包:(平时开发java所需要的软件包,如jdk,tomcat,maven,eclipse/idea)



第一步:安装jdk

1.下载jdk jdk7u79 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

安装:上传jdk-7u79-linux-x64.tar.gz, apache-tomcat-7.0.67.tar.gz, zookeeper-3.4.7.tar.gz 到 centos7 (也就是IP为192.168.0.33的机器)

所有的软件都放在/app/目录下

[root@hadoop app]#tar -zxvf jdk-7u79-linux-x64.tar.gz

[root@hadoop app]#mv jdk-7u79-linux-x64 jdk

[root@hadoop app]#vi /etc/profile

#第二行添加如下内容

# java environment
export JAVA_HOME=/app/jdk
export PATH=.:$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib


:wq

[root@hadoop app]#source /etc/profile

[root@hadoop app]#tar -zxvf apache-tomcat-7.0.67.tar.gz

[root@hadoop app]#mv apache-tomcat-7.0.67 tomcat7.0.67

[root@hadoop app]#tar -zxvf zookeeper-3.4.7.tar.gz

[root@hadoop app]#mv zookeeper-3.4.7 zookeeper3.4.7

[root@hadoop app]#cp zookeeper3.4.7/conf/zoo_sample.cfg zookeeper3.4.7/conf/zoo.cfg

[root@hadoop app]#mv tomcat7.0.67/webapp/ROOT/ tomcat7.0.67/webapp/ROOT-bak

[root@hadoop app]#unzip -o dubbo-admin-2.4.1.war -d ROOT

[root@hadoop app]#mv ROOT/ tomcat7.0.67/webapp/

[root@hadoop app]#sh tomcat7.0.67/bin/startup.sh && tail -f tomcat7.0.67/logs/catalina.out


Ctrl + C

[root@hadoop app]#

打开浏览器http://192.168.0.33:8080

输入用户名root密码root 看到下面的界面就成功了。



这样就成功了。


第二步:写代码

新建一个maven project learn-dubbo (quickstart类型)

修改pom.xml中的<packaging>jar</packaging>为<packaging>pom</packaging> 没有则在</version>后添加


再新建一个maven module learn-dubbo-provider (quickstart类型)

选择learn-dubbo为父项目

添加一个类:DemoService

package com.xx.dubbo.demo;

public interface DemoService {
    String hello(String name);
}

再新建一个maven module learn-dubbo-provider-impl (quickstart类型)

选择learn-dubbo为父项目

修改pom.xml 添加如下依赖:

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
		</dependency>

		<dependency>
			<groupId>com.xx</groupId>
			<artifactId>learn-dubbo-provider</artifactId>
			<version>${project.version}</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>dubbo</artifactId>
			<version>2.5.3</version>
		</dependency>

		<dependency>
			<groupId>org.apache.zookeeper</groupId>
			<artifactId>zookeeper</artifactId>
			<version>3.4.6</version>
		</dependency>

		<dependency>
			<groupId>com.github.sgroschupf</groupId>
			<artifactId>zkclient</artifactId>
			<version>0.1</version>
		</dependency>

添加spring配置:

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" 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-2.5.xsd
    http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <import resource="classpath:dubbo-provider.xml"/>

</beans> 

dubbo-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:dubbo="http://code.alibabatech.com/schema/dubbo"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

	<!-- 提供方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用暴露出来的 -->
	<dubbo:application name="hello-world-app-provider" />

	<!-- 使用multicast广播注册中心暴露发现服务地址 -->
	<dubbo:registry address="zookeeper://192.168.0.33:2181" />
    
    <!-- 用dubbo协议在20880端口暴漏服务 -->
    <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
    
	<!-- 声明需要暴露的服务接口 -->
	<dubbo:service interface="com.xx.dubbo.demo.DemoService" ref="demoService" />
	<bean id="demoService" class="com.xx.dubbo.demo.provider.DemoServiceImpl"></bean>

</beans>


添加一个类:DemoServiceImpl

package com.xx.dubbo.demo.provider;

import com.xx.dubbo.demo.DemoService;

public class DemoServiceImpl implements DemoService {

    public String hello(String name) {
        return "hello " + name;
    }

}

 编写一个测试类:

package com.xx.dubbo.test;

import org.junit.Before;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class Test1 {
    
    @Before
    public void setUp() {
        ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{"classpath*:applicationContext.xml"});
        System.out.println(ctx);
    }
    
    @Test
    public void test1() throws Exception {
        System.in.read();
    }

}

再新建一个maven module learn-dubbo-consumer (quickstart类型)

选择learn-dubbo为父项目


修改pom.xml依赖

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>com.xx</groupId>
            <artifactId>learn-dubbo-provider</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
        </dependency>

        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
        </dependency>

        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

添加spring配置:

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" 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-2.5.xsd
    http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <import resource="classpath:dubbo-consumer.xml"/>

</beans> 

dubbo-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-2.5.xsd
    http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

	<!-- 提供方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用暴露出来的 -->
	<dubbo:application name="consumer-of-hello-app" />

	<!-- 使用multicast广播注册中心暴露发现服务地址 -->
	<dubbo:registry address="zookeeper://192.168.0.33:2181" />
    
    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="demoService" interface="com.xx.dubbo.demo.DemoService" />

</beans> 

编写测试类:

package com.xx.dubbo.consumer;

import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.xx.dubbo.demo.DemoService;


public class Test1 {
    
    private static ApplicationContext ctx = null;
    
    @BeforeClass
    public static void setUp() {
        ctx = new ClassPathXmlApplicationContext(new String[]{"classpath*:applicationContext.xml"});
    }
    
    @Test
    public void test1() throws Exception {
        DemoService demoService = (DemoService) ctx.getBean("demoService");
        String hello = demoService.hello("world");
        System.out.println(hello);
    }

}


先运行provider-impl的测试类 Test1 不要停止

再运行consumer的测试类Test1
查看输出:

hello world


这里 整个hello world 就完成了。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值