Dubbo在Spring下的使用

来源:互联网 发布:linux 使用socket通信 编辑:程序博客网 时间:2024/06/06 12:25

环境:

zookeeper(10.10.36.126:2181)

dubbo-admin(10.10.36.128:8080)

1、公共接口

pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.wz</groupId>  <artifactId>dubbo-interface</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <name>dubbo-interface</name>  <url>http://maven.apache.org</url>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  </properties>  <dependencies>  </dependencies></project>

DubboServivce.java

package com.wz.dubbo_interface;public interface DubboServivce {String sayHello(String name);}


2、服务提供方

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.wz</groupId>  <artifactId>dubbo-provider</artifactId>  <version>0.0.1-SNAPSHOT</version>  <packaging>jar</packaging>  <name>dubbo-provider</name>  <url>http://maven.apache.org</url>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  </properties>  <dependencies>    <dependency>    <groupId>com.wz</groupId>    <artifactId>dubbo-interface</artifactId>    <version>0.0.1-SNAPSHOT</version>    </dependency>        <dependency>    <groupId>commons-io</groupId>    <artifactId>commons-io</artifactId>    <version>1.4</version></dependency><dependency>    <groupId>commons-logging</groupId>    <artifactId>commons-logging</artifactId>    <version>1.1.1</version></dependency>    <dependency>    <groupId>log4j</groupId>    <artifactId>log4j</artifactId>    <version>1.2.16</version></dependency><dependency>    <groupId>org.slf4j</groupId>    <artifactId>slf4j-api</artifactId>    <version>1.6.1</version></dependency><dependency>    <groupId>org.slf4j</groupId>    <artifactId>slf4j-log4j12</artifactId>    <version>1.6.1</version></dependency><dependency>    <groupId>org.javassist</groupId>    <artifactId>javassist</artifactId>    <version>3.15.0-GA</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>3.1.4.RELEASE</version></dependency><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-asm</artifactId>    <version>3.1.4.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>3.1.4.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>3.1.4.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>3.1.4.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>3.1.4.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>3.1.4.RELEASE</version></dependency><dependency><groupId>org.jboss.netty</groupId><artifactId>netty</artifactId><version>3.2.5.Final</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</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.5</version></dependency><dependency><groupId>com.101tec</groupId><artifactId>zkclient</artifactId><version>0.10</version></dependency>  </dependencies></project>

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:context="http://www.springframework.org/schema/context"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://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.xsd    http://code.alibabatech.com/schema/dubbo          http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><context:component-scan base-package="com.wz.dubbo_provider"></context:component-scan><!-- 提供方应用信息,用于计算依赖关系 --><dubbo:application name="dubbo-provider" /><!-- 使用zookeeper注册中心暴露服务地址 --><dubbo:registry address="zookeeper://10.10.36.126:2181" /><!-- 用dubbo协议在20880端口暴露服务 --><dubbo:protocol name="dubbo" port="20880" /><!-- 声明需要暴露的服务接口 --><dubbo:service interface="com.wz.dubbo_interface.DubboServivce" ref="dubboService" /></beans>  

DubboServivceImpl.java:

package com.wz.dubbo_provider;import org.springframework.stereotype.Service;import com.wz.dubbo_interface.DubboServivce;@Service("dubboService")public class DubboServivceImpl implements DubboServivce {@Overridepublic String sayHello(String name) {System.out.println("Hello Dubbo: "+name);return "Hello Dubbo: "+name;}}


3、测试提供方

TestProvider.java:

package com.wz.test;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestProvider {public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:dubbo-provider.xml");context.start();synchronized (TestProvider.class) {while (true) {try {TestProvider.class.wait();} catch (InterruptedException e) {System.out.println("== synchronized error:" + e);}}}}}

访问http://10.10.36.128:8080/可以看到提供者“dubbo-provider”

4、服务消费方

pom.xml与服务提供方一样

dubbo-consumer.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:context="http://www.springframework.org/schema/context"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://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.xsd        http://code.alibabatech.com/schema/dubbo              http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><context:component-scan base-package="com.wz.dubbo_consumer"></context:component-scan><!-- 提供方应用信息,用于计算依赖关系 --><dubbo:application name="dubbo-consumer" /><!-- 使用zookeeper注册中心发现服务地址 --><dubbo:registry address="zookeeper://10.10.36.126:2181" /><!-- 生成远程服务代理,可以和本地bean一样使用dubboService --><dubbo:reference id="dubboService" interface="com.wz.dubbo_interface.DubboServivce" /> </beans>  

DubboConsumer.java:

package com.wz.dubbo_consumer;import javax.annotation.PostConstruct;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import com.wz.dubbo_interface.DubboServivce;@Componentpublic class DubboConsumer {@Autowiredprivate DubboServivce dubboServivce;@PostConstructpublic void localSayHello(){dubboServivce.sayHello("wangzi");}}


5、测试消费方

TestConsumer.java:

package com.wz.test;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestConsumer{public static void main(String[] args) {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:dubbo-consumer.xml");context.start();synchronized (TestConsumer.class) {while (true) {try {TestConsumer.class.wait();} catch (InterruptedException e) {System.out.println("== synchronized error:" + e);}}}}}

访问http://10.10.36.128:8080/可以看到消费者“dubbo-consumer”


源码下载:点击打开链接

0 0
原创粉丝点击