`
sunbin
  • 浏览: 339431 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

dubbo 入门教程 基于zookeeper

 
阅读更多

 dubbo大致分三步操作

1、搭建服务器(以后写)

2、写服务端程序并且将被调用的链接注册到dubbo(生产)

3、写客户端、链接dubbo,调用服务端程序(消费)

实际上我们可以认为写的是ejb程序,一个服务端、一个客户端。只不过他们之间不之间调用

服务端将自己的链接注册到dubbo,客户端联接dubbo,dubbo再调用服务端。

 

以下是网上copy的,没有测试过,但看样子是可以运行的。我们实际的代码也是类似的。

 

 ---------------------------------------------------------------------------------------------------------

上面的话是写给我自己的下面的教程是写给大家的。哈哈有想法的可以评论

 

第一步spring官网下载一个spring比较全的包。我用的还是以前的3.2 

第二步新建一个web项目。将spring的包放在lib下面。 

第三步dubbo.io官网的版本库下载dubbojar包。

第四步Apache的官网下载zookeeper的项目。 zookeeper的安装方法在上篇文章讲过了。拿出zookeeper根目录下面的zookeeper.jar就可以。

附加一些jar 工程下面有的可以无视。slf4j-api-1.7.5.jarslf4j-log4j12-1.7.5.jarnetty-3.7.0.Final.jarjetty-util-6.1.26.jarjetty-6.1.26.jarcommons-cli-1.2.jar 这些jarzookeeper3.5lib下面都有。直接拷贝就可以。

还有一个就是zkclient-0.1.0.jar 一定要下载I0Itec的,这个应该不是zk开发的。这个我也忘记在哪里下载的了。不好意思。要是需要的可以在下面评论留个邮箱什么的。

 

 ------------------------------------------------------------------------------------------------------------------------- 

下面新建一个接口: 

--------------------------------------------------------------------------------------------------------------------------

package com.unj.dubbotest.provider;

public abstract interface DemoService {

 public abstract String build(String name) throws Exception;

}

新建一个实现类

--------------------------------------------------------------------------------------------------------------------------

package com.unj.dubbotest.provider.impl; 

import com.unj.dubbotest.provider.DemoService; 

public class DemoServiceImpl implements DemoService { 

 public String build(String name) throws Exception { 

  System.out.println("name is === " + name); 

  return "你好名称是 ------------- >>>> " + name; 

 } 

}

src下面新建一个applicationContext.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

        ">

 

 <!-- 具体的实现bean -->

 <bean id="demoService" class="com.unj.dubbotest.provider.impl.DemoServiceImpl" />

  <!-- 提供方应用信息,用于计算依赖关系 --> 

 <dubbo:application name="xixi_provider" /> 

 <!-- 使用multicast广播注册中心暴露服务地址 

  <dubbo:registry address="multicast://224.5.6.7:1234" />--> 

 <!-- 使用zookeeper注册中心暴露服务地址 --> 

 <dubbo:registry address="zookeeper://127.0.0.1:2181" /> 

 <!-- dubbo协议在20880端口暴露服务 --> 

 <dubbo:protocol name="dubbo" port="20880" /> 

 <!-- 声明需要暴露的服务接口 --> 

 <dubbo:service interface="com.unj.dubbotest.provider.DemoService"  ref="demoService" />

 </beans>

--------------------------------------------------------------------------------------------------------------------------

最后写一个启动服务的类(用过cxf的都知道)

--------------------------------------------------------------------------------------------------------------------------

package com.unj.dubbotest.provider;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Provider {

    public static void main(String[] args) throws Exception {

     ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});

        context.start();

        System.out.println("新浪微博:疯狂的xxx.");

        System.in.read(); // 按任意键退出

    }

}

启动zookeeper。在执行启动服务的类控制台打印了如下信息

--------------------------------------------------------------------------------------------------------------------------

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment).

log4j:WARN Please initialize the log4j system properly.

SLF4J: This version of SLF4J requires log4j version 1.2.12 or later. See also http://www.slf4j.org/codes.html#log4j_version

新浪微博:疯狂的xxx.

说明启动成功了。

 -------------------------------------------------------------------------------------------------------------------------- 

下面在做客户端。同意新建一个web项目把服务端的jar全部拷贝到lib下面去。

新建一个接口包名和服务端一样这边接口其实要在服务器那边拿过来的。 

--------------------------------------------------------------------------------------------------------------------------

package com.unj.dubbotest.provider;

public abstract interface DemoService {

 public abstract String build(String name) throws Exception;

}

src下面新建一个 applicationConsumer.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 

        ">

 <!-- consumer application name -->

 <dubbo:application name="consumer-of-helloworld-app" />

 <!-- registry address, used for consumer to discover services -->

 <dubbo:registry address="zookeeper://127.0.0.1:2181" />

 <dubbo:consumer timeout="5000" />

 <!-- which service to consume? -->

 <dubbo:reference id="demoService"

  interface="com.unj.dubbotest.provider.DemoService" />

</beans>

 --------------------------------------------------------------------------------------------------------------------------

新建一个main类来测试: 

--------------------------------------------------------------------------------------------------------------------------

package com;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.unj.dubbotest.provider.DemoService; 

public class Main {

 public static void main(String[] args) {

  ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(

    new String[] { "applicationConsumer.xml" });

  context.start();

  DemoService demoService = (DemoService) context.getBean("demoService"); // get 

  // service 

  // invocation 

  // proxy

   String hello = ""; 

  try {

   hello = demoService.build("新浪微博:疯狂的xxx");

  } catch (Exception e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  } // do invoke!

  System.out.println(Thread.currentThread().getName() + " " + hello);

 }

}

 

打印信息如下: 

-------------------------------------------------------------------------------------------------------------------------- 

log4j:WARN No appenders could be found for logger (org.springframework.core.env.StandardEnvironment). 

log4j:WARN Please initialize the log4j system properly. 

main 你好名称是 ------------- >>>> 新浪微博:疯狂的xxx

 

在看一下服务器端打印的信息

------------------------------------

 

 新浪微博:疯狂的xxx

name is==xxx

name is== 新浪微博:疯狂的xxx

--------------------------------------------------------

 

 

 

 

从上午发布的安装zookeeper 遇到的第一个错误开始一直在搞dubbo 中午吃了饭睡了会觉。中间错误一个又一个慢慢的都解决了。小有成就,哈哈。算这个星期天没有白费吧。

学习的过程值得留恋。分享一下吧 

只是之前听网友提过dubbo这个东西一直都没有百度和使用过。前天答应老板我们框架中留一个口出来dubbo 。今天天气热就在宿舍研究吧。

 

首先是百度知道是做什么的后来就开始找教程但是大家都知道百度的教程基本都是一个模板。看了大概有20基本就换换字代码都是一样的。试了一下不行也不报错也不知道在哪里入口。后来想想一定是不行换一种方式吧直接用main方法启动服务的方式。百度了一推还是一样的模板就是maven 但是哥没有使用过maven。在关键的时候还要研究一下maven 比较耗时间了。后来准备放弃的时候聊会天,继续找有权威性的找到dubbo的团队提供出来的。继续发现springxml报错。后来浏览器访问啊 ping 各种尝试最后不行。再微博上看了dubbo发布的14年的时候域名绑定就换成dubbo.io后来在这个网上看到了一个下载。是github 然后进去看看。下载了2demo。一个是基于http的,还有一个是基于ws也就是websevice的。看了一下都是基于maven的。有点恼火了。刚刚开始百度的时候第一步就是用zookeeper。最后官网给的例子不是zookeeper。继续看之前的例子,(总不能放弃吧)。还是没有结果。想想先一步一步来吧。于是新建了一个web项目放入spring对应的包。找到dubbo的包放了进来,然后找到zookeeper的包放进来,写一个接口写一个实现类,配置文件就用的百度过来的,开始不明白,看了很多资料自己也开始慢慢地理解过来了,于是在main里面启动服务,错误,说找不到类,好办了我想一定是我的zookeeperclient没有加,但是我是服务器这边的应该是不要的想想  先加进去试试。服务器启动再次报错。有看了一下包名不是这个开放团队的client。再找放进去试试。还是对少各种class 一个一个找放进去。还不错对了。服务启动  不抱错了,然后任何提示启动成功的标志都没有之后就学网上的人start 后面打印一句话。打印不出来,怎么回事呢。难道还是不对,百思不得其解。后来在想想我是同时zookeeper注册的我的zookeeper没有开。打开zookeeper。再次启动对了。那叫一个兴奋。服务端就这样好了。 

 

客户端就直接copy网上的代码,调用成功。开始聊天吹牛逼、。终于成功了。后来发现我的服务端和客户端都在一个项目上面的。然后在新建一个项目放客户端。继续报错。说找不到方法。找到对应的类下面的方法。是有的啊。难道是缓存。clear一下。还是不对。头晕了。准备放弃了。实在没有办法了。准备换http或者是ws的了。休息一下喝杯水。想到了难道是版本的问题。找到上午发布文章的zookeeper下载的连接,下载了一个3.3.6的版本的zookeeper.jar放进去,好了。测试几次真的是好了。哈哈 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics