Dubbo--HelloWorld
来源:互联网 发布:域名可以用来干什么 编辑:程序博客网 时间:2024/06/06 00:05
上篇博客对Dubbo进行了大概的介绍,这篇博客介绍如何使用Dubbo,经典的HelloWorld。
通过上篇博客我们知道,在dubbo中有一个很重要的角色是注册中心,Dubbo现在支持的有三种方式:1.multicast;2.zookeeper;3.redis。下面的Demo使用的是multicast方式。
项目目录结构:
消费者:
服务者:
消费者端代码:
ConsumerThd.java
package com.tgb.klx.dubbo.consumer;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.tgb.klx.dubbo.server.HelloWorld;public class ConsumerThd implements Runnable {public void run() {ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationConsumer.xml" });context.start();HelloWorld helloWorld = (HelloWorld) context.getBean("demoService");String hello = helloWorld.hello("小康");System.out.println(hello);}public static void main(String[] args) {new Thread(new ConsumerThd()).start();}}
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.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="consumer-of-helloworld-app" /> <dubbo:registry address="multicast://224.5.6.7:1234"/> <dubbo:reference id="demoService" interface="com.tgb.klx.dubbo.server.HelloWorld"/> </beans>
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.tgb.klx</groupId><artifactId>dubbo-Consumer-multicast</artifactId><version>0.0.1-SNAPSHOT</version><name>dubbo-Consumer</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.3</version> </dependency> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.15.0-GA</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> <exclusions><exclusion><groupId>com.sun.jdmk</groupId><artifactId>jmxtools</artifactId></exclusion><exclusion><groupId>com.sun.jmx</groupId><artifactId>jmxri</artifactId></exclusion><exclusion><artifactId>jms</artifactId><groupId>javax.jms</groupId></exclusion><exclusion><artifactId>mail</artifactId><groupId>javax.mail</groupId></exclusion></exclusions> </dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.1.6.RELEASE</version></dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>com.github.adyliu</groupId> <artifactId>zkclient</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.3.6</version> </dependency> </dependencies></project>
服务端,即服务提供者端代码:
HelloWorld.java
package com.tgb.klx.dubbo.server;public interface HelloWorld {public String hello(String name);}
HelloWorldImpl.java
package com.tgb.klx.dubbo.server;public class HelloWorldImpl implements HelloWorld{public String hello(String name) {name=name+"小康测试";return name;}}
DubboProviderMain.java
package com.tgb.klx.dubbo.server;import java.io.IOException;import org.springframework.context.support.ClassPathXmlApplicationContext;public class DubboProviderMain {public static void main(String[] args) throws IOException{ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext(new String[]{"applicationProvider.xml"});context.start(); System.out.println("Press any key to exit."); System.in.read(); }}
applicationProvider.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" /><!-- 注册地址 --><dubbo:registry address="multicast://224.5.6.7:1234"/><dubbo:protocol name="dubbo" port="20880" /> <dubbo:service interface="com.tgb.klx.dubbo.server.HelloWorld" ref="demoService" executes="10" /><bean id="demoService" class="com.tgb.klx.dubbo.server.HelloWorldImpl" /></beans>
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.tgb.klx</groupId> <artifactId>dubbo-Server-multicast</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>dubbo</artifactId><version>2.5.3</version></dependency><dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.15.0-GA</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.15</version><exclusions><exclusion><groupId>com.sun.jdmk</groupId><artifactId>jmxtools</artifactId></exclusion><exclusion><groupId>com.sun.jmx</groupId><artifactId>jmxri</artifactId></exclusion><exclusion><artifactId>jms</artifactId><groupId>javax.jms</groupId></exclusion><exclusion><artifactId>mail</artifactId><groupId>javax.mail</groupId></exclusion></exclusions></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.1.6.RELEASE</version></dependency> <dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.5</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.6.1</version></dependency><dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.3.6</version></dependency><dependency><groupId>com.github.adyliu</groupId><artifactId>zkclient</artifactId><version>2.0</version></dependency><dependency><groupId>org.jboss.netty</groupId><artifactId>netty</artifactId><version>3.2.0.Final</version></dependency></dependencies></project>
运行结果:
还有一种方式是将Zookeeper作为注册中心,需要下载并安装zookeeper。将配置文件中的注册中心修改为如下即可:
其他代码不用修改,推荐使用zookeeper作为注册中心。如此可以通过Dubbo+注册中心实现分布式服务。服务消费者不用知道服务的具体位置,只要知道注册中心位置即可,消费者只要能消费,不用管消费的是哪的服务,服务提供方与服务消费方解耦。
使用zookeeper注册中心,与dubbo结合,可以查看服务提供者和消费者的信息,将dubbo管理的war包部署到tomcat上,查看服务提供者,如下图:
部署Dubbo管理的war包到tomcat上,即可查看服务提供者与消费者信息。如下图:提供者:
服务消费者,如下图:
注:dubbo-admin.war部署在jdk1.8上会报错,使用1.7没有问题。
1 0
- Dubbo--HelloWorld
- Dubbo入门例子HelloWorld
- Dubbo之HelloWorld
- zookeeper + dubbo 实现 helloworld
- Dubbo——HelloWorld
- Dubbo入门之HelloWorld
- Dubbo DEMO HelloWorld(zookeeper)
- 第四章 dubbo之helloworld
- dubbo入门学习之Helloworld
- 初始Dubbo框架(HelloWorld)
- Dubbo新手入门实例HelloWorld(zookeeper)
- Dubbo的helloworld maven版
- Dubbo之入门例子HelloWorld
- Dubbo入门之HelloWorld篇
- Dubbo安装配置及demo,helloworld测试
- dubbo简单入门(helloworld例子)
- Dubbo-----HelloWorld之管理控制台(4)
- spring下的dubbo+zookeeper的helloworld
- [LeetCode]Binary Tree Preorder Traversal
- CentOS 6.X 挂载4TB的硬盘的方法
- java多线程学习笔记——volatile关键字
- java的JPanel面板刷新
- C - The C Answer (2nd Edition) - Exercise 1-16
- Dubbo--HelloWorld
- Code Forces 559 B. Equivalent Strings(递归)
- Scala进阶编程指南
- linux命令
- MySQL:索引工作原理
- 一个最简单的CLI命令行界面实现
- HDU pie (二分查找)
- 两道水题
- 域:一款抽象的射击游戏