码迷,mamicode.com
首页 > 编程语言 > 详细

spring集成dubbo

时间:2015-11-03 18:03:27      阅读:656      评论:0      收藏:0      [点我收藏+]

标签:

现在将系统按照服务划分成多个部分。代码功能分为前端和后台服务已经很流行。下面我将介绍基于maven项目结构的spring集成dubbo功能。

1、首先找zookeeper网站下载zookeeper-3.4.6.tar.gz包,将其放置到服务器上。

2、解压zookeeper包 ,安装。并将/confg/zoo.sample.cfg更名成zoo.cfg

3、修改配置文件内容,如图

技术分享


4、在spring服务器端导入需要的dubbo包和zookeeper包:

 <dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>dubbo</artifactId>
   <version>${dubbo.version}</version>
   <exclusions>
      <exclusion>
         <groupId>org.springframework</groupId>
         <artifactId>spring</artifactId>
      </exclusion>
   </exclusions>
</dependency>
<dependency>
   <groupId>org.apache.zookeeper</groupId>
   <artifactId>zookeeper</artifactId>
   <version>3.4.6</version>
</dependency>

5、客户端也要导入所需要的包:

  <dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>

6、服务器端提服务接口和服务实现

package com.ucf.dubbo;


public interface DemoService {
    String sayHello(String name);
}
package com.ucf.dubbo;

import org.springframework.stereotype.Component;

@Component
public class DemoServiceImpl implements DemoService {
@Override
    public String sayHello(String name) {
return "Hello Dubbo,Hello " + name;
    }

}

7、编写dubbo配置文件  dubbo-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="hello-world-app"  />

<!-- 使用multicast广播注册中心暴露服务地址 -->
      <!--  <dubbo:registry address="multicast://224.5.6.7:1234" /> -->

      <!-- 使用zookeeper注册中心暴露服务地址 -->
      <dubbo:registry address="zookeeper://192.168.1.224:2181" />

<!-- 用dubbo协议在20880端口暴露服务 -->
      <dubbo:protocol name="dubbo" port="20880" />

<!-- 声明需要暴露的服务接口 -->
      <dubbo:service interface="com.ucf.dubbo.DemoService" ref="demoService" />

<!-- 和本地bean一样实现服务 -->
      <bean id="demoService" class="com.ucf.dubbo.DemoServiceImpl" />
</beans>

8、客户端编写接口(注意这个接口一定要和服务提供方接口的路径一致

package com.ucf.dubbo;

import org.springframework.stereotype.Component;

/**
 * Created by user on 2015/11/3.
 */
@Component
public interface DemoService {
    String sayHello(String name);
}

9、客户端的配置文件如下:dubbo-customer.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-of-helloworld-app"/>
<!-- 使用multicast广播注册中心暴露发现服务地址 -->
      <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->
      <dubbo:registry address="zookeeper://192.168.1.224:2181" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
      <dubbo:reference id="demoService" interface="com.ucf.dubbo.DemoService" />
</beans>

9、服务器端将配置文件放置到spring上下文中

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:util="http://www.springframework.org/schema/util"  
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:jdbc="http://www.springframework.org/schema/jdbc"
  xmlns:tx="http://www.springframework.org/schema/tx"

  xmlns:task="http://www.springframework.org/schema/task"
  xsi:schemaLocation="
      http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd

     http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"
  default-lazy-init="true">

<context:property-placeholder location="classpath:/META-INF/app.properties" />
<util:properties id="appSettings" location="classpath:/META-INF/app.properties" />
<context:component-scan base-package="com.ucf,com.mybatis.sys.dto" />

<import resource="classpath:ucf-jdbc.xml"/>
<import resource="classpath:applicationContext-aop.xml" />
<import resource="classpath:radis.xml"/>
<import resource="dubbo-provider.xml"/>

</beans>

10、客户端将其将配置文件放置到spring上下文中

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:util="http://www.springframework.org/schema/util"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:aop="http://www.springframework.org/schema/aop"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:jdbc="http://www.springframework.org/schema/jdbc"
      xmlns:tx="http://www.springframework.org/schema/tx"

      xmlns:task="http://www.springframework.org/schema/task"
      xsi:schemaLocation="
      http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
     http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd

     http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"
      default-lazy-init="true">
<context:property-placeholder location="/META-INF/app.properties" />
<util:properties id="appSettings" location="/META-INF/app.properties" />

<import resource="dubbo-customer.xml"/>


</beans>

11、写个demo启动测试

hdb.dubbo;

com.ucf.dubbo.DemoService;
org.springframework.context.support.ClassPathXmlApplicationContext;

Consumer {
    main([] args) {
        ClassPathXmlApplicationContext context = ClassPathXmlApplicationContext();
        context.start();
        DemoService demoService = (DemoService)context.getBean();  hello = demoService.sayHello(); System..println(hello);
    }
}

结果如图:

技术分享


spring集成dubbo

标签:

原文地址:http://my.oschina.net/zjItLife/blog/525354

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!