一、下载zookeeper并启动
https://www-us.apache.org/dist/zookeeper/
修改conf目录下的zoo_simple.cfg重命名为zoo.cfg(zookeeper启动会自动找到这个配置文件,并可在这个配置文件下修改数据和日志存储位置)
启动bin目录下的zkServer.cmd,ok。
二、创建公共的接口工程
目录结构如下
其中liuli包下放所有接口提供给其他工程使用。
三、创建公共的pom与配置文件工程(本实例仅有pom)
在pom.xml中引入如下的依赖
<properties> <org.springframework.version>4.3.14.RELEASE</org.springframework.version> </properties> <dependencies> <!-- dubbo配置 --> <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo --> <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.13</version> </dependency> <dependency> <groupId>org.jboss.netty</groupId> <artifactId>netty</artifactId> <version>3.2.6.Final</version> </dependency> <!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient --> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> <!-- spring配置 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${org.springframework.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework.version}</version> </dependency> </dependencies>
四、创建服务提供者
pom依赖
<dependency> <groupId>com.test</groupId> <artifactId>common-api</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.test</groupId> <artifactId>common-pom</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
注意:引入工程后,需要将前两个项目打成jar包,并打开cmd,输入命令行
mvn install:install-file -Dfile=<jar-path> -DgroupId=<group> -DartifactId=<artifactId> -Dversion=<version> -Dpackaging=<packaging> -DlocalRepositoryPath=<path>
将jar包加入本地仓库,否则当服务端运行时会报ClassNotFound异常。
扫描二维码关注公众号,回复:
5551293 查看本文章
创建接口实现包,并重写接口方法
package liuli.impl; import org.springframework.stereotype.Service; import liuli.MyService; @Service("mySerivce") public class MyServiceImpl implements MyService { public String sayHello() { return "hello"; } public String sayBye(String name) { return name+"bye!!!!"; } }
配置spring.xml (注册dubbo服务)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns="http://www.springframework.org/schema/beans" 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/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="liuli.impl"></context:component-scan> <dubbo:application name="mine"/> <!-- 注册到zookeeper上去 --> <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry> <!-- 暴露的端口 --> <dubbo:protocol name="dubbo" port="28080"></dubbo:protocol> <!-- 服务提供接口 --> <dubbo:service interface="liuli.MyService" ref="mySerivce"></dubbo:service> </beans>
再配好web.xml 放入tomcat运行即可
五、创建服务消费者(使用springmvc)
目录结构
pom依赖
<dependency> <groupId>com.test</groupId> <artifactId>common-api</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> <dependency> <groupId>com.test</groupId> <artifactId>common-pom</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
springmvc.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns="http://www.springframework.org/schema/beans" 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/context http://www.springframework.org/schema/context/spring-context.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:application name="mine"/> <dubbo:registry address="zookeeper://127.0.0.1:2181"></dubbo:registry> <!-- 当使用该标签时使用@AutoWired注入服务 --> <!-- <dubbo:reference id="myService" check="false" interface="liuli.MyService"></dubbo:reference> --> <!-- 当使用该标签时使用@Reference注入服务 --> <dubbo:annotation package="liuli.controller" /> <context:annotation-config /> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/> <context:component-scan base-package="liuli.controller"></context:component-scan> </beans>
MyHandler.java
package liuli.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.alibaba.dubbo.config.annotation.Reference; import liuli.MyService; @Controller public class MyHandler { @Reference(interfaceClass=MyService.class) private MyService service; @RequestMapping("/test.do") @ResponseBody public String test1(String name) { return service.sayBye(name); } }
在web.xml中配好,放入tomcat中运行。