一、环境预备
由于要用到Dubbo和Zookeeper,所以需要提前将Dubbo+Zookeeper环境准备好。
1.Dubbo环境:Dubbo Admin管理平台配置方法。
启动服务后登录:(用户名/密码: root/root、guest/guest)
2.Zookeeper环境:ZooKeeper+Zkui安装配置
启动服务后登录:(用户名/密码: admin/manager)
二、用Idea工具搭建环境
具体步骤如下:
1.新建一个空的maven项目:
GroupId:com.dubbo,ArtifactId:Demo:
Project name:DubboDemo
点击完成。
2.在刚才的DubboDemo上创建一个Web项目(消费者)
右键-New-Module:
勾上Create from archetype,选择maven-archetype-webapp,下一步。
填写ArtifactId,如:comsumerdemo,下一步:
选择Maven信息,下一步:
完成!!!
3.在刚才的DubboDemo上创建一个项目(供应者)
下一步:
填写ArtifactId,如:providerdemo,下一步:
完成!
三、框架代码结构详情
1.DubboDemo空maven
除了pom.xml其他都可以删除(如:src等),DubboDemo的pom.xml内容:
<?xml version="1.0" encoding="UTF-8"?>
<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.dubbo</groupId>
<artifactId>Demo</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>consumerdemo</module>
<module>providerdemo</module>
</modules>
</project>
2.供应者providerdemo
2-1,代码结构:
2-2,pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
<artifactId>Demo</artifactId>
<groupId>com.dubbo</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>providerdemo</artifactId>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.18.2-GA</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.3.6</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
</dependencies>
</project>
2-3,IProviderService接口:
package com.dubbo.service;
/**
* <p>Description:</p>
* <p>com.dubbo.service</p>
*
* @author smartdt
* @version 1.0
* @date 2018/5/21
*/
public interface IProviderService {
public String getString();
}
2-4,ProviderServiceImpl类:
package com.dubbo.service.impl;
import com.dubbo.service.IProviderService;
/**
* <p>Description:</p>
* <p>com.dubbo.service.impl</p>
*
* @author smartdt
* @version 1.0
* @date 2018/5/21
*/
public class ProviderServiceImpl implements IProviderService {
public String getString() {
return "Hello Dubbo~";
}
}
2-5,ProviderApplication类:
package com.dubbo;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
/**
* <p>Description:</p>
* <p>com.dubbo</p>
*
* @author smartdt
* @version 1.0
* @date 2018/5/21
*/
public class ProviderApplication {
public static void main(String[] args) throws IOException {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("provider.xml");
context.start();
System.out.println("服务方开始提供服务~~~~~");
System.in.read();
}
}
2-6,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:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"
default-lazy-init="false">
<bean id="myInterface" class="com.dubbo.service.impl.ProviderServiceImpl"></bean>
<dubbo:application name="dubbo_provider"></dubbo:application>
<dubbo:registry address="zookeeper://127.0.0.1:2181" check="false" subscribe="false"></dubbo:registry>
<dubbo:service interface="com.dubbo.service.IProviderService" ref="myInterface"/>
</beans>
3.消费者(consumerdemo)
配置:
3-1,代码结构:
3-2,pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<parent>
<artifactId>Demo</artifactId>
<groupId>com.dubbo</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>consumerdemo</artifactId>
<packaging>war</packaging>
<name>consumerdemo Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.dubbo</groupId>
<artifactId>providerdemo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.2.9.RELEASE</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.6</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
</dependencies>
<build>
<finalName>consumerdemo</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
其中:
<dependency>
<groupId>com.dubbo</groupId>
<artifactId>providerdemo</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
是引用的providerdemo依赖关系。
3-3,ConsumerController类:
package com.dubbo.controller;
import com.dubbo.service.IProviderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>Description:</p>
* <p>com.dubbo.controller</p>
*
* @author smartdt
* @version 1.0
* @date 2018/5/21
*/
@Controller
@RequestMapping("/dubbo")
public class ConsumerController {
@Autowired
private IProviderService iProviderService;
@RequestMapping("/hi.do")
public String hi() {
System.out.println("22222222222222222222222");
String str = iProviderService.getString();
System.out.println("服务方:" + str);
return "dubbo";
}
}
3-4,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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.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.dubbo.controller"/>
<!-- 配置注解驱动 -->
<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
<!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"/>
</bean>
<dubbo:application name="dubbo_consumer"></dubbo:application>
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" check="false"></dubbo:registry>
<!-- 要引用的服务 -->
<dubbo:reference interface="com.dubbo.service.IProviderService" id="myInterface"></dubbo:reference>
</beans>
四、启动
1.先启动providerdemo的ProviderApplication:(供应者的方式还有其他方式)
"D:\Program Files\Java\jdk1.8.0_91\bin\java" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:56078,suspend=y,server=n -Dfile.encoding=UTF-8 -classpath "D:\Program Files\Java\jdk1.8.0_91\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\plugin.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\rt.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_91\jre\lib\ext\zipfs.jar;D:\******\新建文件夹\DubboDemo\providerdemo\target\classes;D:\MyProgram Files\maven\mvnRespo\com\alibaba\dubbo\2.5.3\dubbo-2.5.3.jar;D:\MyProgram Files\maven\mvnRespo\org\springframework\spring\2.5.6.SEC03\spring-2.5.6.SEC03.jar;D:\MyProgram Files\maven\mvnRespo\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar;D:\MyProgram Files\maven\mvnRespo\org\jboss\netty\netty\3.2.5.Final\netty-3.2.5.Final.jar;D:\MyProgram Files\maven\mvnRespo\org\javassist\javassist\3.18.2-GA\javassist-3.18.2-GA.jar;D:\MyProgram Files\maven\mvnRespo\org\apache\zookeeper\zookeeper\3.3.6\zookeeper-3.3.6.jar;D:\MyProgram Files\maven\mvnRespo\log4j\log4j\1.2.15\log4j-1.2.15.jar;D:\MyProgram Files\maven\mvnRespo\javax\mail\mail\1.4\mail-1.4.jar;D:\MyProgram Files\maven\mvnRespo\javax\activation\activation\1.1\activation-1.1.jar;D:\MyProgram Files\maven\mvnRespo\javax\jms\jms\1.1\jms-1.1.jar;D:\MyProgram Files\maven\mvnRespo\com\sun\jdmk\jmxtools\1.2.1\jmxtools-1.2.1.jar;D:\MyProgram Files\maven\mvnRespo\com\sun\jmx\jmxri\1.2.1\jmxri-1.2.1.jar;D:\MyProgram Files\maven\mvnRespo\jline\jline\0.9.94\jline-0.9.94.jar;D:\MyProgram Files\maven\mvnRespo\junit\junit\3.8.1\junit-3.8.1.jar;D:\MyProgram Files\maven\mvnRespo\com\github\sgroschupf\zkclient\0.1\zkclient-0.1.jar;D:\Program Files (x86)\JetBrains\IntelliJ IDEA 14.1.7\lib\idea_rt.jar" com.dubbo.ProviderApplication
Connected to the target VM, address: '127.0.0.1:56078', transport: 'socket'
log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
服务方开始提供服务~~~~~
2.再通过tomcat配置consumerdemo后启动:
访问:http://localhost:8000/dubbo/hi.do
控制台:
22222222222222222222222
服务方:Hello Dubbo~
3.dubbo admin控制台
提供者:
消费者:
4.Zkui平台:
5.源码:
https://download.csdn.net/download/smartdt/10427785新手一枚,欢迎指正拍砖~ ~ ~
来源:CSDN
作者:smartdt
链接:https://blog.csdn.net/smartdt/article/details/80393044