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项目中接口的返回值,远程调用成功。