dubbo_zookeeper简单实例

来源:互联网 发布:阿里云病毒入侵 编辑:程序博客网 时间:2024/05/19 21:58

1、结合Spring分别创建 发送端和接收端 zookeeper 自己安装并开启


2、导入需要的jar包 利用maven

<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.qn</groupId>  <artifactId>ConvergentEngineering</artifactId>  <version>1.0-SNAPSHOT</version>  <build>    <plugins>      <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-compiler-plugin</artifactId>        <configuration>          <source>1.6</source>          <target>1.6</target>        </configuration>      </plugin>    </plugins>  </build>  <modules>    <module>duboo_api</module>    <module>duboo_provider</module>    <module>duboo_consumer</module>  </modules>  <packaging>pom</packaging>  <name>ConvergentEngineering</name>  <url>http://maven.apache.org</url>  <properties>    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>    <spring.version>3.2.8.RELEASE</spring.version>  </properties>  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </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>com.github.sgroschupf</groupId>      <artifactId>zkclient</artifactId>      <version>0.1</version>    </dependency>    <!-- spring相关 -->    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-core</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-beans</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-context</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-jdbc</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-web</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-webmvc</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-aop</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-tx</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-orm</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-context-support</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-test</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-jms</artifactId>      <version>${spring.version}</version>    </dependency>  </dependencies></project>

2、在发送端配置的applicationContext.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        ">    <!--具体实现bean-->    <bean id="userService" class="com.qn.service.imple.UserServiceImple"/>    <!--提供方应用信息,用于计算依赖关系-->    <dubbo:application name="xs_provider"/>    <!--使用zookeeper注册中心暴露服务地址-->    <dubbo:registry address="zookeeper://localhost:2181"/>    <!--用duboo在协议20880端口暴露服务-->    <dubbo:protocol name="dubbo" port="20880"/>    <!--声明需要暴露的服务接口-->    <dubbo:service interface="com.qn.service.UserService" ref="userService"/></beans>

3、编写需要暴露的service接口

package com.qn.service;/** * Created by Administrator on 2017/11/6 0006. */public interface UserService {    public String getUserName(String name);}

4、service 的实现类

package com.qn.service.imple;import com.qn.service.UserService;/** * Created by Administrator on 2017/11/6 0006. */public class UserServiceImple implements UserService {    @Override    public String getUserName(String name) {        return name;    }}

5、将发布端启动(也可以发布到Tomcat中)
package com.qn.controller;import org.springframework.context.support.ClassPathXmlApplicationContext;import java.io.IOException;/** * Created by Administrator on 2017/11/6 0006. */public class UserMain {    public static void main(String[] args) {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");        context.start();        System.out.println("启动");//        为了服务一直开着,利用输入流来阻塞模拟        try {            System.in.read();        } catch (IOException e) {            e.printStackTrace();        }    }}

6、编写消费方,jar和发送端一样

接收端的applicationContext.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="hjy_consumer"/>    <!--使用zookeeper中心暴露-->    <dubbo:registry address="zookeeper://localhost:2181"/>    <!--生成远程服务代理 可以像使用本地bean一样使用service-->    <dubbo:reference id="userService" interface="com.qn.service.UserService"/></beans>

7、消费方的service 接口  不需要从新写实现类,

package com.qn.service;/** * Created by Administrator on 2017/11/6 0006. */public interface UserService {    public String getUserName(String name);}
8、运行消费方

package com.qn.controller;import com.qn.service.UserService;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * Created by Administrator on 2017/11/6 0006. */public class UserDemo {    public static void main(String[] args) {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");        context.start();        System.out.println("启动");        UserService userService = (UserService) context.getBean("userService");        String name = userService.getUserName("小明");        System.out.println(name);    }}