Windows环境 springboot+dubbo+zookerper 实现相互调用

windows环境springboot+dubbo+zookerper实现相互调用

一、zookerper的下载与配置:

jar下载地址:http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

1、下载下来然后解压,修改配置文件。把conf文件夹下面的 zoo_sample.cfg 复制一份,改名为zoo.cfg

2、然后修改其中一些基本属性,端口,和日志生成的路径。

注意:win10 的zookerper路径不能有空格,与中文。

3、启动 windos很好启动直接双击zkServer就可以了。然后启动客户端。

说明启动成功了!!!

二、dubbo的部署

下载地址:https://codeload.github.com/apache/dubbo/zip/2.5.x

1、下载解压,然后找到admin文件夹

2、修改配置文件

3、修改连接zookeper的配置,已经dubbo登录用户名密码。

4、修改完毕后回到这个界面用cmd进行maven打包。快捷键:shift+鼠标右键 然后点击在此处打开窗口命令。

5、执行完毕后,出现targe目录文件夹把这个 war 复制到tomcat的webapp (修改war包的名字,这个随便你) 然后启动tomcat

6、启动完毕后访问dubbo控制页面, 输入用户名密码后 就可以进去了。

三、代码配置

1、pom.xml文件配置

  <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
   <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.7</java.version>
         <dubbo.version>2.5.5</dubbo.version>
         <zkclient.version>0.10</zkclient.version>
    </properties>
    
  <dependencies>
  
 	 <!-- spring boot web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
  <!-- Dubbo依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>${dubbo.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

         <!--zookeeper的客户端依赖-->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>${zkclient.version}</version>
        </dependency>
	
  </dependencies>

yml 文件配置:

#端口设置
server:
  port: 9998

spring-dubbo-provide.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"/>
    <!-- 注册中心的ip地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
   

    <!-- use dubbo protocol to export service on port 20880 -->
    <dubbo:protocol name="dubbo" port="20880"/>

    <!-- service implementation, as same as regular local bean-->
    
    <bean id="userService" class="com.siyuan.serviceimp.UserImp"/> 
    
    <!-- declare the service interface to be exported-->
    
    <dubbo:service interface="com.siyuan.service.Users" ref="userService"/> 
    
    
</beans>

接口代码:

public interface Users {
	
	public void add();
}

实现类代码:

import com.siyuan.service.Users;


public class UserImp implements Users{

	public void add() {

		System.out.println("调用了第doubbo02项目");
		
	}

}

启动类代码:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;


@SpringBootApplication //spring boot启动
@ImportResource({"classpath:spring-dubbo-provide.xml"})
public class APP {
	
	public static void main(String[] args) {
		SpringApplication.run(APP.class, args);
	}
}

然后启动我们可以看到dubbo中有服务提供者了。

下面是消费者代码:

pom文件配置:

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.7.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
   <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.7</java.version>
          <dubbo.version>2.5.5</dubbo.version>
         <zkclient.version>0.10</zkclient.version>
    </properties>
    
  <dependencies>
  
 	 <!-- spring boot web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 提供服务项目的jar  -->
        <dependency>
           <groupId>com.siyuan</groupId>
		  <artifactId>springBootDoubbo02</artifactId>
		  <version>0.0.1-SNAPSHOT</version>
        </dependency>
        
       

        
 	<!-- Dubbo依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>${dubbo.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

         <!--zookeeper的客户端依赖-->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>${zkclient.version}</version>
        </dependency>
	
  </dependencies>

yml配置:

#端口设置
server:
  port: 9999

spring-dubbo-remote.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="consumer"/>
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
    <dubbo:protocol name="dubbo" port="20880"/>
    <dubbo:reference id="users" check="false" interface="com.siyuan.service.Users"/>
    
    <bean id="remoteUsers" class="com.siyuan.serviceimp.RemotUserImp"/> 
    
    
</beans>

接口代码:

public interface RemoteUsers {
	
	public void add();
}

实现类代码: 注意这里的service用的是spring的注解

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.siyuan.service.Users;
import com.siyuan.services.RemoteUsers;

@Service
public class RemotUserImp implements RemoteUsers{
	
	@Autowired
	private Users users;

	public void add() {
		
		// 调用
		users.add();
		
	}

}

controller代码:

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.siyuan.services.RemoteUsers;

@RestController
@RequestMapping("test/")
public class LoginController {
	
	
	@Autowired
	private RemoteUsers remoteUsers;
	
	
	@RequestMapping("test01")
	@ResponseBody
	public String login(HttpServletRequest req){
		String  name = "调用成功";
		System.out.println("进入dubbo项目");

		remoteUsers.add();
		
		
		return name;
	}
}

启动类代码:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;

@SpringBootApplication //spring boot启动
@ImportResource({"classpath:spring-dubbo-remote.xml"})
public class APP {
	
	public static void main(String[] args) {
		SpringApplication.run(APP.class, args);
	}
}

然后启动项目

我们到dubbo中可以看到 消费者:

最后我们通过浏览器访问看是否调用成功!!!

看看控制台:

分别在两个控制台打印。。说明远程调用成功!!!

做技术最难能可贵的就是持续的学习,吸收知识,不断的思考形成自己的理解和模式。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏中科院渣渣博肆僧一枚

python lxml中etree的简单应用

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

12250
来自专栏Android补给站

Android Navigation的四大要点你都知道吗?

在JetPack中有一个组件是Navigation,顾名思义它是一个页面导航组件,相对于其他的第三方导航,不同的是它是专门为Fragment的页面管理所设计的...

26630
来自专栏北京宏哥

Java自动化测试框架-04 - TestNG之Test Method篇 - 道法自然,法力无边(详细教程)

测试方法是可以带有参数的。每个测试方法都可以带有任意数量的参数,并且可以通过使用TestNG的@Parameters向方法传递正确的参数。

12920
来自专栏JavaEE

ActiveMQ --- 整合篇

之前说到了activeMQ的一些基本用法,本文将介绍activeMQ如何与spring以及spring boot整合。

9010
来自专栏中科院渣渣博肆僧一枚

结构标记处理工具(一)、xml模块

什么是xml? 我的理解是,xml存储着数据,是一种数据结构,结构化的存储着数据(已标签为节点的树形结构) 就像字典、列表一样,都是一种特定的数据结构。 ...

7320
来自专栏D·技术专栏

Spring之对象解析及注册(一)

首先看下new XmlBeanFactory(new ClassPathResource("beans.xml"))这行代码

8320
来自专栏java思维导图

为啥mybatis的mapper只有接口没有实现类,但它却能工作?

说起mybatis,大伙应该都用过,有些人甚至底层源码都看过了。在mybatis中,mapper接口是没有实现类的,取而代之的是一个xml文件。也就是说我们调用...

27420
来自专栏D·技术专栏

Spring注解式编程

相比较XML配置来说,当项目过大的时候难以维护。Spring还有一种支持0配置的注解式编程。

7030
来自专栏咸鱼学Python

字体加密 | 猫眼榜单字体解密(性感咸鱼,在线炒冷饭)

猫眼的字体加密相信大家都很熟悉,每一个分析字体加密的博主都会写一次字体加密,没写过至少也会做过。

12310
来自专栏python编程军火库

第三篇 爬虫技术之PyQuery理论介绍篇

pyquery库是jQuery的Python实现,可以用于解析HTML网页内容,官方文档地址是:http://packages.python.org...

6420

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励