Dubbo与Zookeeper、Spring整合使用 maven+springmvc+dubbo+zookeeper



|
1
2
3
4
5
6
7
8
9
10
11
12
|
# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial# synchronization phase can takeinitLimit=10# The number of ticks that can pass between# sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.dataDir=/tmp/zookeeper# the port at which the clients will connectclientPort=2181 |
- tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
- dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
- clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。


|
1
2
3
|
dubbo.registry.address=zookeeper://127.0.0.1:2181dubbo.admin.root.password=rootdubbo.admin.guest.password=guest |
address:zookeeper 的ip地址 后面是端口号 ,和zookeeper中配置的端口号一样
修改完成后需要一个tomcat 打开tomcat \webapps\ROOT 目录 ,此目录放置的是tomcat的首页,删除所有的文件,将解压后修改好的所有的dubbo-admin 里的文件复制到 \webapps\ROOT中,
此时我们已经配置好了。现在可以启动tomcat了 (主意:在启动tomcat之前要先启动zookeeper ,启动zookeeper前面有介绍)。 启动tomcat之后 在浏览器输入 http://localhost:8080 (我的是8083) 进入dubbo管控台的主页
(备注:使用jdk1.8 tomcat启动可能会出错 有关 URI。。。。 的错误。我最后换成1.7了)

用户名和密码就是dubbo.properties 中配置的 默认的是 用户名 :root, 密码:root
输入用户名和密码之后 进入首页



|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
package com.cl.user.serviceImpl;import org.springframework.stereotype.Service;import com.cl.user.servicei.UserService;@Service("userService")public class UserServiceImpl implements UserService{ @Override public String sayHello() { System.out.println("hello world----------------------------"); return "hello world"; }} |

|
1
2
3
4
5
6
|
package com.cl.user.servicei;public interface UserService { public String sayHello();} |
当然 项目 1 要 依赖 项目 2
所以在1 的 pom.xml 中 有

1 <dependency>
2 <groupId>test-web</groupId>
3 <artifactId>test-pubilc-interface</artifactId> 加入项目2依赖
4 <version>0.0.1-SNAPSHOT</version>
5 <scope>test</scope>
6 </dependency>

那么 1 中的 UserServiceImpl 就可以实现 UserService接口
1 <dependency>
2 <groupId>com.alibaba</groupId>
3 <artifactId>dubbo</artifactId>
4 <version>2.5.3</version>
5 </dependency>
还要有 zookeeper的 所以在1 的 pom.xml 中 有
1 <dependency>
2 <groupId>org.apache.zookeeper</groupId>
3 <artifactId>zookeeper</artifactId>
4 <version>3.3.3</version>
5 </dependency>
下面介绍一下项目1 中 的 ApplicationContent-dubbo.xml 和 ApplicationContent.xml
1 <!-- 启动组件扫描,排除@Controller组件,该组件由SpringMVC配置文件扫描 -->
2 <context:component-scan base-package="com.cl.user.serviceImpl"/>
ApplicationContent-dubbo.xml dubbo服务的配置

1 <!-- 提供方应用信息,用于计算依赖关系 -->
2 <dubbo:application name="hehe_provider" />
3 <!-- 使用zookeeper注册中心暴露服务地址 端口是zookeeper 中配置的2181-->
4 <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
5 <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
6 <!-- 用dubbo协议在20880端口暴露服务 -->
7 <dubbo:protocol name="dubbo" port="20880" />
8 <!-- 具体的实现bean -->
9 <bean id="userService" class="com.cl.user.serviceImpl.UserServiceImpl" />
10 <!-- 声明需要暴露的服务接口 -->
11 <dubbo:service interface="com.cl.user.servicei.UserService" ref="userService" />

主意:有可能你的配置文件中不识别 <dubbo:> 去网上找解决的办法
到这里我们的 “提供者” 即 服务 已经开发完了,那么如何启动服务呢? 在项目1中有个start.java


1 package com.test;
2
3 import org.apache.log4j.PropertyConfigurator;
4
5 public class start {
6 static{
7 PropertyConfigurator.configure("src/main/resources/log4j.properties");
8 }
9 public static void main(String[] args) {
10
11 com.alibaba.dubbo.container.Main.main(args);
12 }
13 }

主意里面有main方法,可以直接运行启动了。别急!!! 之前还有个问题就是为什 ApplicationContent-dubbo.xml 和 ApplicationContent.xml 这两个配置文件 必须要放到 /META-INF/spring/下面
因为 com.alibaba.dubbo.container.Main.main(args) 默认就会去加载 /META-INF/spring/ 下的配置文件
我们来看一下源码





@Controller
public class UserController { @Resource(name="userService")
private UserService userService; @RequestMapping("/hello/test/world")
public void sayHello(){
System.out.println(userService.sayHello()+"**************************");
}
}

ApplicationContext-mvc.xml 都是springmvc的配置 如下不解释了

<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
<context:component-scan base-package="com" /> <!-- 对静态资源文件的访问 restful-->
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/lib/**" location="/lib/" />
<mvc:resources mapping="/plugins/**" location="/plugins/" />
<mvc:resources mapping="/uploadFiles/**" location="/uploadFiles/" />
<mvc:resources mapping="/WEB-INF/html/**" location="/WEB-INF/html/" /> <!-- 配置SpringMVC的视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/html"/>
<property name="suffix" value=".jsp"/>
</bean> <!-- 上传拦截,如最大上传值及最小上传值 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<property name="maxUploadSize">
<value>104857600</value>
</property>
<property name="maxInMemorySize">
<value>4096</value>
</property>
<property name="defaultEncoding">
<value>utf-8</value>
</property>
</bean>

ApplicationContext-dubbo.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:application name="hehe_consumer" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 组播注册 -->
<!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> --> <!-- 生成远程服务代理,可以像使用本地bean一样使用userService -->
<dubbo:reference id="userService" interface="com.cl.user.servicei.UserService" />
</beans>

开发完消费者后 ,启动消费者,可以在管控台看到


<!-- 组播注册 -->
<!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
Dubbo与Zookeeper、Spring整合使用 maven+springmvc+dubbo+zookeeper的更多相关文章
- 关于Maven+Springmvc+Dubbo+Zookeeper整合
为什么要用dubbo? 还是让官方来解释吧: http://dubbo.io/User+Guide-zh.htm http://dubbo.io/ 一般 nginx+tomcat | - ...
- maven+springmvc+dubbo+zookeeper
为什么要用dubbo? 还是让官方来解释吧: http://dubbo.io/User+Guide-zh.htm http://dubbo.io/ 一般 nginx+tomcat ...
- 170328、Maven+SpringMVC+Dubbo 简单的入门demo配置
之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程序猿来说,真是一个好消息.最近有时间了,打算做一个demo把dubbo在本地跑起来先. 先copy一段dubbo ...
- Maven+SpringMVC+Dubbo 简单的入门demo配置
转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...
- MongoDB 学习(三)MongoDB 和 Spring 整合(Maven)
一.MongoDB 和 Spring 整合(Maven) 1.相关 jar 包准备 2.用 Maven 创建项目,pom.xml 文件 <project xmlns="http://m ...
- 【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(转)
Dubbo与Zookeeper.Spring整合使用 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spri ...
- Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(转)
Dubbo与Zookeeper.Spring整合使用 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spri ...
- spring整合mybatis和springmvc的配置概图
- Spring整合SpringMVC + Mybatis基础框架的配置文件
目录 前言 1. Mybatis层编写 2. Spring层编写 1. Spring整合Mybatis 2. Spring整合service 3. SpringMVC层编写 1. 编写web.xml ...
随机推荐
- Python之路系列:面向对象初级:静态属性、静态方法、类方法
一.静态属性 静态属性相当于数据属性. 用@property语法糖装饰器将类的函数属性变成可以不用加括号直接的类似数据属性. 可以封装逻辑,让用户感觉是在调用一个普通的数据属性. 例子: class ...
- node创建一个简单的web服务
本文将如何用node创建一个简单的web服务,过程也很简单呢~ 开始之前要先安装node.js 1.创建一个最简单的服务 // server.js const http = require('http ...
- C++_标准模板库STL概念介绍2-泛型编程
有了之前使用STL的经验后,接下来讨论泛型编程及其底层的理念: 首先我们知道STL只是泛型编程的一种: 而面向对象的编程方式关注的是编程的数据方面: 而泛型编程关注的是算法: 但是,他们之间的一个重要 ...
- hdu-1702-栈和队列
ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- 使用Maven运行Java main的3种方式使用Maven运行Java main的3种方式
maven使用exec插件运行java main方法,以下是3种不同的操作方式. 一.从命令行运行 1.运行前先编译代码,exec:java不会自动编译代码,你需要手动执行mvn compile来完成 ...
- Scrum3.0 敏捷开发白皮书
一.什么是敏捷? 敏捷是一种以用户需求为核心.采用不断迭代的方式进行的软件开发模式.敏捷依靠自组织 的跨职能小团队,在短周期内,做出小块的东西来,通过快速.频繁的迭代,迅速的获取反 馈,进而不断的完善 ...
- PIE SDK打开静止卫星数据
1. 功能简介 静止卫星是位于地球赤道上空约3.58万km处,与地面始终保持相对静止的卫星,静止卫星的特点是覆盖区域广,具有很强的机动灵活性,能够对特定区域进行分钟级高重复观测,可快速监测灾害目标的动 ...
- oracle 笔记---(五)__内存管理
###查看连接池的信息 select connection_pool,status,maxsize from dba_cpool_info
- nfs 问题总结
1. [root@backup read]# touch r01.txt touch: cannot touch `r01.txt': Stale file handle 使用共享目录创建文件 ...
- pipline --学习 (-)
一,语法: 编写位置: pipline 启动docker pipeline { agent { docker 'maven:3.3.3' } stages { stage('build') { ste ...