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);
}
}
再运行consumer的测试类Test1
查看输出:
hello world
这里 整个hello world 就完成了。