当前位置 : 主页 > 网络编程 > 其它编程 >

存根|可能会_dubbo+zookeeper+springmvc搭建实例教程

来源:互联网 收集:自由互联 发布时间:2023-07-02
篇首语:本文由编程笔记#自由互联小编为大家整理,主要介绍了dubbo+zookeeper+springmvc搭建实例教程相关的知识,希望对你有一定的参考价值。 篇首语:本文由编程笔记#自由互联小编为大
篇首语:本文由编程笔记#自由互联小编为大家整理,主要介绍了dubbo+zookeeper+springmvc搭建实例教程相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#自由互联小编为大家整理,主要介绍了dubbo+zookeeper+springmvc搭建实例教程相关的知识,希望对你有一定的参考价值。

本篇是实例教程分享搭建dubbozookeeper一些必经的坑 更多请查看Dubbo官方文档 本篇最终项目dubbo.demo下载

这里引用官方文档的一张图片来简单说明各个节点的角色职责

节点角色说明

  • Provider: 暴露服务的服务提供方。
  • Consumer: 调用远程服务的服务消费方。
  • Registry: 服务注册与发现的注册中心。
  • Monitor: 统计服务的调用次调和调用时间的监控中心。
  • Container: 服务运行容器。

一、本篇概述

本篇分两个部分。 第一搭建好provider和consumer后使用Main方法阻塞来模拟不涉及到SpringMVC。 第二搭建后使用SpringMVC进行注入调用远程服务接口。

二、准备工作

框架版本

  • tomcat8jdk7
  • 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下管理员账号密码都是rootzookeeper的地址等。

打开浏览器输入http://localhost:8080/dubbo-admin-2.4.1 运行前记得先打开zookeeper服务 输入账号密码root进入这个页面就算成功了。

三、创建提供者provider工程使用maven构建

dubbo.provider项目结构如下图

导入依赖pom.xml如下

4.0.0 com.soecode dubbo.provider war 0.0.1-SNAPSHOT dubbo.provider Maven Webapp http://maven.apache.org log4j log4j 1.2.14 com.alibaba dubbo 2.4.10 org.apache.zookeeper zookeeper 3.3.4 com.101tec zkclient 0.3 dubbo.provider

在service包下创建接口HelloService.java

package com.soecode.dubbo.service;public interface HelloService /** * say hello * param name * return */ public String sayHello(String name);

在Service.impl下实现接口HelloServiceImpl.java

package com.soecode.dubbo.service.impl;import org.springframework.stereotype.Service;import com.soecode.dubbo.service.HelloService;Service("helloServiceImpl")public class HelloServiceImpl implements HelloService public String sayHello(String name) return "hello,"name"!";

接下来填写dubbo-provider.xml来暴露接口

到此服务接口已经定义好接下来要通过main方法读取配置文件来达到zookeeper服务注册的效果。

创建ProviderApp.java

package com.soecode.dubbo;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * 服务提供者示例 * author antgan * date 2017/1/12 * */public class ProviderApp public static void main(String[] args) throws Exception //读取配置文件 new ClassPathXmlApplicationContext(new String[]"dubbo-provider.xml"); System.out.println("provider服务已注册"); //使线程阻塞 System.in.read();

运行ProviderApp即可。

如何校验是否成功注册进入dubbo-admin点菜单栏上的提供者如下图就注册成功了成功暴露接口。


四、创建消费者consumer项目

dubbo.consumer项目结构

引入依赖pom.xml如下

4.0.0 com.soecode dubbo.consumer war 0.0.1-SNAPSHOT dubbo.consumer Maven Webapp http://maven.apache.org log4j log4j 1.2.14 com.alibaba dubbo 2.4.10 org.apache.zookeeper zookeeper 3.3.4 com.101tec zkclient 0.3 com.soecode dubbo.provider 0.0.1-SNAPSHOT org.springframework spring-web 4.1.7.RELEASE org.springframework spring-webmvc 4.1.7.RELEASE taglibs standard 1.1.2 jstl jstl 1.2 com.fasterxml.jackson.core jackson-databind 2.5.4 dubbo.consumer

配置dubbo-consumer.xml向zookeeper注册接口有点像存根

创建ConsumerApp.java运行测试

package com.soecode.dubbo;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.soecode.dubbo.service.HelloService;/** * 消费者示例 * author antgan * date 2017/1/12 * */public class ConsumerApp public static void main(String[] args) throws Exception //读取配置文件 ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext(new String[]"dubbo-consumer.xml"); //获取在zookeeper注册的服务接口 HelloService helloService (HelloService)context.getBean("helloService"); //调用接口 System.out.println("HelloService " helloService.sayHello("ant")); //不让控制台消失按任意键结束 System.in.read();

运行结果

我们也可以在dubbo-admin上看一下如下

至此已经完成了第一部分在main方法模拟调用远程接口。


五、consumer引入SpringMVC

在dubbo.consumer引入springMVCpom.xml 添加以下jar包

org.springframework spring-web 4.1.7.RELEASE org.springframework spring-webmvc 4.1.7.RELEASE taglibs standard 1.1.2 jstl jstl 1.2 com.fasterxml.jackson.core jackson-databind 2.5.4

在resource文件夹下创建spring-web.xml

修改web.xml使其运行时加载配置文件。

"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > dubbo.consumer contextConfigLocation classpath:/dubbo-consumer.xml org.springframework.web.context.ContextLoaderListener dubbo.consumer-dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring-web.xml 0 dubbo.consumer-dispatcher /

在dubbo.web包下创建HelloController.java

package com.soecode.dubbo.web;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import com.soecode.dubbo.service.HelloService;ControllerRequestMapping("hello")public class HelloController /** * 注入远程接口 */ Autowired private HelloService helloService; /** * 调用远程接口返回index.jsp页面 * param model * return */ RequestMapping("index") public String index(Model model) model.addAttribute("str", helloService.sayHello("ant")); return "index";

运行地址栏输入http://localhost:8080/dubbo.consumer/hello/index


几个坑你可能会遇到

一、遇到这个报错

java.lang.NullPointerException at org.springframework.core.SerializableTypeWrapper$TypeProxyInvocationHandler.invoke(SerializableTypeWrapper.java:239)

解决办法这是因为spring的jar包冲突dubbo自带一个2.x.x版本的spring。pom修改如下

com.alibaba dubbo 2.4.10 org.springframework spring

二、其他都做好了就是无法启动。 解决方法可以尝试provider打包成jarconsumer引入。

三、无法读取dubbo的配置文件 解决方法下载dubbo.xsd手动添加xsd。具体方法可以参考。解决:dubbo找不到dubbo.xsd报错


最后一起进步一起学习吧

【文章原创作者:ddos攻击防御 http://www.558idc.com/aqt.html欢迎留下您的宝贵建议】
上一篇:struts2流程和源码分析
下一篇:没有了
网友评论