1. 程式人生 > >Idea環境下Dubbo+SpringMVC+ZooKeeper+Zkui例項程式

Idea環境下Dubbo+SpringMVC+ZooKeeper+Zkui例項程式

一、環境預備

由於要用到Dubbo和Zookeeper,所以需要提前將Dubbo+Zookeeper環境準備好。

啟動服務後登入:(使用者名稱/密碼: root/root、guest/guest


啟動服務後登入:(使用者名稱/密碼: 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

新手一枚,歡迎指正拍磚~ ~ ~