Idea环境下Dubbo+SpringMVC+ZooKeeper+Zkui实例程序

送分小仙女□ 提交于 2019-12-05 04:59:40

一、环境预备

由于要用到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



新手一枚,欢迎指正拍砖~ ~ ~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!