1、下載zookeeperhtml
使用dubbo須要先下載zookeeper,下載地址:http://archive.apache.org/dist/zookeeper/,根據本身的須要選擇版本下載。前端
2、配置zookeeperjava
將下載下來的壓縮包解壓,並將conf文件夾下的zoo_sample.cfg重命名爲zoo.cfg,並修改其內容git
# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. # 數據存放地址 dataDir=E:/zookeeper-3.4.10/zookeeper-3.4.10/data # 日誌存放地址 dataLogDir=E:/zookeeper-3.4.10/zookeeper-3.4.10/logs # the port at which the clients will connect # 客服端鏈接端口 clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1
3、新建web項目,項目結構爲:github
dubbo-provider的pom文件爲:web
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.pan</groupId> <artifactId>dubbo-demo</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>org.pan</groupId> <artifactId>dubbo-provider</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>dubbo-provider Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <spring.version>4.1.1.RELEASE</spring.version><!-- spring 引入 --> </properties> <dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.7</version> <!-- 排除傳遞spring依賴--> <exclusions> <exclusion> <artifactId>spring</artifactId> <groupId>org.springframework</groupId> </exclusion> <exclusion> <artifactId>spring-web</artifactId> <groupId>org.springframework</groupId> </exclusion> <exclusion> <artifactId>spring-beans</artifactId> <groupId>org.springframework</groupId> </exclusion> <exclusion> <artifactId>spring-context</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <dependency> <!-- 和你下的zookeeper版本要一致--> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <!-- 爲spring核心提供了大量擴展。能夠找到使用spring applicationcontext特性時所需的所有類,--> <!-- jdni所需的所有類,ui方面的用來與模板(templating)引擎如 velocity、freemarker、 --> <!-- jasperreports集成的類,以及校驗validation方面的相關類,還有ejb,cache,format,jms等等。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- spring-context 的擴展支持,用於 mvc 方面 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <!-- spring的核心包,包含spring框架基本的核心工具類,spring其它組件要都要使用到這個包裏的類, --> <!-- 是其它組件的基本核心。包括asm,cglib以及相關的工具類 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <!-- spring表達式語言。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <!-- spring對jdbc的簡單封裝 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <!-- 包含spring對dao特性集進行了擴展,使其支持 ibatis、jdo、ojb、toplink,--> <!-- 由於hibernate已經獨立成包了,如今不包含在這個包裏了。這個jar文件裏大部分的類都要 --> <!-- 依賴spring-dao.jar裏的類,用這個包時你須要同時包含spring-dao.jar包。--> <!-- spring 整合第三方的 orm 映射支持,如 hibernate 、ibatis、jdo 以及spring的jpa的支持。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <!-- spring對junit框架的簡單封裝。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <!-- spring提供對事務的支持,事務的相關處理以及實現類就在這個jar包中 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <!-- 包含web應用開發時,用到spring框架時所需的核心類,包括自動載入webapplicationcontext特性的類、 --> <!-- struts與jsf集成類、文件上傳的支持類、filter類和大量工具輔助類。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <!-- spring mvc相關,實現springmvc的操做。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- 對json和xml格式的支持類 --> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.34</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.5.6</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> </dependency> <!-- 若是你使用到了JSP頁面,這就須要 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project>
dubbo-consumer的pom文件爲:spring
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.pan</groupId> <artifactId>dubbo-demo</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>org.pan</groupId> <artifactId>dubbo-consumer</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>dubbo-consumer Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <spring.version>4.1.1.RELEASE</spring.version><!-- spring 引入 --> </properties> <dependencies> <dependency> <groupId>org.pan</groupId> <artifactId>dubbo-provider</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.5.7</version> <!-- 排除傳遞spring依賴--> <exclusions> <exclusion> <artifactId>spring</artifactId> <groupId>org.springframework</groupId> </exclusion> <exclusion> <artifactId>spring-web</artifactId> <groupId>org.springframework</groupId> </exclusion> <exclusion> <artifactId>spring-beans</artifactId> <groupId>org.springframework</groupId> </exclusion> <exclusion> <artifactId>spring-context</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <!-- 爲spring核心提供了大量擴展。能夠找到使用spring applicationcontext特性時所需的所有類,--> <!-- jdni所需的所有類,ui方面的用來與模板(templating)引擎如 velocity、freemarker、 --> <!-- jasperreports集成的類,以及校驗validation方面的相關類,還有ejb,cache,format,jms等等。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- spring-context 的擴展支持,用於 mvc 方面 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <!-- spring的核心包,包含spring框架基本的核心工具類,spring其它組件要都要使用到這個包裏的類, --> <!-- 是其它組件的基本核心。包括asm,cglib以及相關的工具類 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <!-- spring表達式語言。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <!-- spring對jdbc的簡單封裝 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <!-- 包含spring對dao特性集進行了擴展,使其支持 ibatis、jdo、ojb、toplink,--> <!-- 由於hibernate已經獨立成包了,如今不包含在這個包裏了。這個jar文件裏大部分的類都要 --> <!-- 依賴spring-dao.jar裏的類,用這個包時你須要同時包含spring-dao.jar包。--> <!-- spring 整合第三方的 orm 映射支持,如 hibernate 、ibatis、jdo 以及spring的jpa的支持。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <!-- spring對junit框架的簡單封裝。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <!-- spring提供對事務的支持,事務的相關處理以及實現類就在這個jar包中 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <!-- 包含web應用開發時,用到spring框架時所需的核心類,包括自動載入webapplicationcontext特性的類、 --> <!-- struts與jsf集成類、文件上傳的支持類、filter類和大量工具輔助類。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <!-- spring mvc相關,實現springmvc的操做。 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- 對json和xml格式的支持類 --> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.34</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.6</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.5.6</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> </dependency> <!-- 若是你使用到了JSP頁面,這就須要 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> </project>
4、dubbo-providerexpress
dubbo-provider.xmlapache
<?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 "> <!-- 具體的實現bean --> <!-- <bean id="loginService" class="org.pan.provider.service.impl.LoginServiceImpl" /> --> <!-- 提供方應用信息,用於計算依賴關係 --> <dubbo:application name="dubbo_provider" /> <!-- 使用zookeeper註冊中心暴露服務地址 即zookeeper的所在服務器ip地址和端口號 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo協議在20880端口暴露服務 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 聲明須要暴露的服務接口 --> <dubbo:service interface="org.pan.provider.service.LoginService" ref="loginServiceImpl" /> </beans>
將dubbo-provider.xml引入到spring-servlet.xmljson
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="org.pan.provider" /> <!-- 開啓springmvc註解支持 --> <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <!-- 配置json的轉換器使用的是fastjson --> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="charset" value="UTF-8" /> <property name="supportedMediaTypes"> <list> <!-- 這裏順序不能反,必定先寫text/html,否則ie下出現下載提示 --> <value>text/html;charset=UTF-8</value> <value>text/json;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> <import resource="classpath:dubbo-provider.xml" /> <!-- 定義靜態資源包,定義以後,請求將不會達到HandleMapping,而是直接從該資源包中提取資源文件 --> <mvc:resources location="/static/" mapping="/static/**"></mvc:resources> <!-- 定義一個攔截器棧 --> <mvc:interceptors> <!-- 定義一個攔截器鏈 --> <mvc:interceptor> <mvc:mapping path="/*/*"/> <bean class="org.pan.provider.intercepter.EncodingInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> <!-- 配置一個文件上傳解析器,此ID是固定的,沒法改變的 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 單位是byte,例如:10M=10*1024*1024 當設值爲:-1時表示不限制容量 --> <property name="maxUploadSize" value="-1"></property> <!-- 默認字符集編碼 --> <property name="defaultEncoding" value="UTF-8"></property> <!-- 每次讀取文件時,最大的內存容量 --> <property name="maxInMemorySize" value="1024"></property> </bean> <!-- 配置一個試圖解析器ViewResolver(應用控制器) --> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 若是你的頁面使用到了JSTL技術,須要指定JstlView類來專門解析 --> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <property name="prefix" value="/"></property> <property name="suffix" value=""></property> </bean> </beans>
配置web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <!-- 啓動Spring大容器,將Spring容器內的內容歸入到WEB容器中 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-servlet.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置前端控制器 --> <servlet> <servlet-name>mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-servlet.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>mvc</servlet-name> <!-- 在DispatcherServlet中/表明全部,其餘地方都是/* --> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
LoginService.java
package org.pan.provider.service; /** * @author panmingshuai * @description * @Time 2018年3月7日 下午6:26:57 * */ public interface LoginService { String getStr(); }
LoginServiceImpl.java
package org.pan.provider.service.impl; import org.pan.provider.service.LoginService; import com.alibaba.dubbo.config.annotation.Service; /** * @author panmingshuai * @description * @Time 2018年3月7日 下午6:27:23 * */ @org.springframework.stereotype.Service public class LoginServiceImpl implements LoginService { @Override public String getStr() { return "服務端2"; } }
EncodingInterceptor.java
package org.pan.provider.intercepter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class EncodingInterceptor implements HandlerInterceptor{ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }
5、dubbo-consumer
dubbo-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: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="dubbo_consumer" /> <!-- 使用zookeeper註冊中心暴露服務地址 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 生成遠程服務代理,能夠像使用本地bean同樣使用demoService --> <dubbo:reference id="loginService" interface="org.pan.provider.service.LoginService" /> </beans>
將dubbo-consumer.xml引入到spring-servlet2.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" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <context:component-scan base-package="org.pan.consumer" /> <import resource="classpath:dubbo-consumer.xml" /> <!-- 開啓springmvc註解支持 --> <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <!-- 配置json的轉換器使用的是fastjson --> <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter"> <property name="charset" value="UTF-8" /> <property name="supportedMediaTypes"> <list> <!-- 這裏順序不能反,必定先寫text/html,否則ie下出現下載提示 --> <value>text/html;charset=UTF-8</value> <value>text/json;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven> <!-- 定義靜態資源包,定義以後,請求將不會達到HandleMapping,而是直接從該資源包中提取資源文件 --> <mvc:resources location="/static/" mapping="/static/**"></mvc:resources> <!-- 定義一個攔截器棧 --> <mvc:interceptors> <!-- 定義一個攔截器鏈 --> <mvc:interceptor> <mvc:mapping path="/*/*"/> <bean class="org.pan.consumer.intercepter.EncodingInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> <!-- 配置一個文件上傳解析器,此ID是固定的,沒法改變的 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 單位是byte,例如:10M=10*1024*1024 當設值爲:-1時表示不限制容量 --> <property name="maxUploadSize" value="-1"></property> <!-- 默認字符集編碼 --> <property name="defaultEncoding" value="UTF-8"></property> <!-- 每次讀取文件時,最大的內存容量 --> <property name="maxInMemorySize" value="1024"></property> </bean> <!-- 配置一個試圖解析器ViewResolver(應用控制器) --> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 若是你的頁面使用到了JSTL技術,須要指定JstlView類來專門解析 --> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <property name="prefix" value="/"></property> <property name="suffix" value=""></property> </bean> </beans>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <!-- 啓動Spring大容器,將Spring容器內的內容歸入到WEB容器中 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-servlet2.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置前端控制器 --> <servlet> <servlet-name>mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-servlet2.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>mvc</servlet-name> <!-- 在DispatcherServlet中/表明全部,其餘地方都是/* --> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
LoginCousumerController.java
package org.pan.consumer.controller; import javax.annotation.Resource; import org.pan.provider.service.LoginService; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * * @author panmingshuai * @description * @Time 2018年3月8日 上午10:20:50 * */ @RequestMapping("/login") @Controller public class LoginConsumerController { @Resource(name = "loginService") private LoginService loginService; @RequestMapping(value = "/loginone") @ResponseBody public String login0(){ return loginService.getStr(); } public static void main(String[] args) { try { // 初始化Spring ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-servlet2.xml"); LoginService loginService = (LoginService) ctx.getBean("loginService"); // 獲取遠程服務代理 System.out.println(loginService.getStr());; // 運行遠程方法 } catch (Exception e) { e.printStackTrace(); } } }
6、啓動項目
先啓動zookeeper,點擊zookeeper文件夾下bin文件夾下的zkServer.cmd啓動zookeeper。
分別爲provider和consumer,new一個Tomcat,記住consumer的端口改成8006,8081,8010
訪問localhost:8081/dubbo-consumer/login/loginone,能夠看到獲得了provider項目中接口的返回值,遠程調用成功。