用maven项目来完成本次学习
准备工作
框架版本:
- tomcat8,jdk7
- dubbo-admin-2.4.1.war 这是dubbo管理war包,修改war直接扔到tomcat跑就可以了。
- zookeeper-3.4.5 本实例使用zookeeper作为注册中心,其实还能使用其他的,这里不详细讲解。
2.1 搭建zookeeper(我这里是window环境)
请参考window7环境下ZooKeeper的安装及运行 单机搭建很简单。
2.2 部署dubbo-admin-2.4.1.war
直接放到tomcat的webapp文件夹下,运行tomcat。
- 配置信息都在WEB-INF/dubbo.properties下,管理员账号密码都是root,zookeeper的地址等。
打开浏览器输入:http://localhost:8080/dubbo-admin-2.4.1
(运行前记得先打开zookeeper服务)
输入账号密码root,进入这个页面就算成功了。
三、创建提供者provider工程(使用maven构建)
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.6</version>
</dependency>
<!-- 添加zk客户端依赖 -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<!==公共服务接口=>
<groupId>com.itmayiedu</groupId>
<artifactId>itmayiedu-dubbo-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
在service包下创建接口UserService .java
public interface UserService {
//提供服务 使用userId查找用户信息FS
public String getUserId(Integer id);
}
在productor工程下实现接口UserService .java
public class UserServiceImpl implements UserService {
public String getUserId(Integer id) {
System.out.println("被客户端(消费者)消费....id:" + id);
if (id == 1) {
return "艾福杰尼";
}
if (id == 2) {
return "GAI";
}
if (id == 3) {
return "码云";
}
return "未找到...";
}
}
接下来填写provider里面来暴露接口:新建一个xml: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.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd ">
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="provider" />
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" />
<!-- 用dubbo协议在29014端口暴露服务 -->
<dubbo:protocol name="dubbo" port="29014" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.itmayiedu.service.UserService"
ref="userService" />
<!-- 具体的实现bean -->
<bean id="userService" class="com.itmayiedu.service.impl.UserServiceImpl" />
</beans>
到此服务接口已经定义好,接下来要通过main方法读取配置文件,来达到zookeeper服务注册的效果。
创建ProviderApp.java
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("provider.xml");
app.start();
System.out.println("服务发布成功...");
System.in.read();//让程序阻塞。
}
运行ProviderApp,即可。
如何校验是否成功注册?进入dubbo-admin,点菜单栏上的提供者,如下图就注册成功了,成功暴露接口。
创建消费者consumer项目:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.6</version>
</dependency>
<!-- 添加zk客户端依赖 -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>com.itmayiedu</groupId>
<artifactId>itmayiedu-dubbo-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<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="consumer" />
<!-- 使用multicast广播注册中心暴露发现服务地址 -->
<dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:reference id="userService" interface="com.itmayiedu.service.UserService" />
</beans>
ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("consumer.xml");
app.start();
UserService userService=(UserService) app.getBean("userService");
String name = userService.getUserId(3);
System.out.println("消费端从生产者获取到 name:"+name);
System.in.read();
}
log4j:WARN Please initialize the log4j system properly.
消费端从生产者获取到 name:码云