Idea環境下Dubbo+SpringMVC+ZooKeeper+Zkui例項程式
阿新 • • 發佈:2019-02-19
一、環境預備
由於要用到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~