Dubbo+Zookeeper+Spring+Struts+Hibernate(ssh)整合应用实现分布式

Dubbo+Zookeeper+Spring+Struts+Hibernate(ssh)整合应用实现分布式

一、 项目搭建
把原来以ssh为框架的系统拆分为三个项目,分别为dubbo-client、dubbo-service、dubbo-web。
1. dubbo-client:消费者,主要实现controller层控制跳转等。
2. dubbo-service:主要是接口定义,供dubbo-client调用,以及dubbo-web的service层去实现该接口,分离这一层的好处就是前端项目调用接口时候,直接调用dubbo-service的接口即可,不需要关注后端如何实现;而service层来具体实现该接口,进行业务逻辑处理,不需要关注dubbo-client的controller层如何调用。
3. dubbo-web:提供者,主要是service、dao实现,结合数据层实现后端业务逻辑处理。
项目搭建完后的结构图如下:
这里写图片描述

二、项目配置
1. 将dubbo-service打包成jar加入到dubbo-client和dubbo-web中。

    <groupId>com.lwl.dubbo</groupId>
    <artifactId>dubbo-client</artifactId>
    <packaging>war</packaging>
    <version>${internal.version}</version>
    <name>dubbo-client</name>
    <dependencies>
     <dependency>
        <groupId>com.lwl.dubbo</groupId>
        <artifactId>dubbo-service</artifactId>
        <version>1.0.0</version>
    </dependency>
<groupId>com.lwl.dubbo</groupId>
    <artifactId>dubbo-web</artifactId>
    <packaging>war</packaging>
    <version>${internal.version}</version>
    <name>dubbo-web</name>
    <dependencies>
        <dependency>
            <groupId>com.lwl.dubbo</groupId>
            <artifactId>dubbo-service</artifactId>
            <version>1.0.0</version>
        </dependency>

2.在pom.xml中加入以下配置:

<!-- dubbo strat -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.3.6</version>
            <exclusions>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

3.消费者的dubbo-config.xml:


    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="dobbu-client" />

    <!-- 注册仓库地址:zookeeper组件,192.168.61.128:2181 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181"
        check="false" />

    <!-- 等待时间,重试0次 -->
    <dubbo:consumer timeout="10000" retries="0" check="false"
        lazy="true" />

    <!-- 基础信息 -->
    <dubbo:reference id="userService"
        interface="com.lwl.dubbo.service.IUserService" />

4 . 提供者的dubbo-config.xml:

<dubbo:application name="dubbo-web" owner="programmer"
        organization="lwl-dubbox" />
    <!--使用 zookeeper 注册中心暴露服务,注意要先开启 zookeeper -->
    <dubbo:registry address="zookeeper://localhost:2181" />
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" serialization="java" />

    <!--使用 dubbo 协议实现定义好的 api.PermissionService 接口 -->
    <dubbo:service interface="com.lwl.dubbo.service.IUserService"
        ref="userService" protocol="dubbo" />
    <!--具体实现该接口的 bean -->
    <bean id="userService" class="com.lwl.dubbo.service.impl.UserServiceImpl" />

5 . 配置applicationContext-spring.xml:

    <import resource="classpath:dubbo_config.xml"/>

二、 项目编写
1. 消费者服务:

public class ConsumerApp {

    public static void main(String[] args) throws Exception {
        //读取配置文件
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"dubbo_config.xml"});
        //获取在zookeeper注册的服务接口
        context.start();

        IUserService userService = (IUserService) context.getBean("userService");
        //不让控制台消失,按任意键结束
        System.in.read();
    }
}

2 . 提供者服务:

public class ProviderApp {
    public static void main(String[] args) throws Exception {
        // 读取配置文件
        new ClassPathXmlApplicationContext(new String[] { "dubbo_config.xml" });
        System.out.println("provider服务已注册");
        // 使线程阻塞
        System.in.read();
    }
}

三、 项目结果
3.1启动zookeeper
3.2将项目部署到Tomact
3.3主要功能界面
这里写图片描述

这里写图片描述

四、总结
一开始看到文档很不解,完全没有头绪不知道该如何下手。于是就瞎琢磨的浪费了一个8天时间也没用弄好。想一口吃成一个胖子,单纯的以为把自己项目搬到实验四就可以了。由于不理解dubbo的内容,遇到了很多错误。找了很多办法都无法解决。于是就白白浪费了8天时间。
临近期末了,不得不静下心来,自己重新搭框架慢慢做,我不相信做不出来。这一次我不再整个项目照搬。而且从基础的登录开始,做了一会,我发现能实现登录了,那就说明之前是因为自己的不细心,很多需要改,需要配置的地方没有弄好而出现的项目无法运行。所以不管做什么一定不能急,要理解内容,慢慢开始下手。
em…然后就是加油ヾ(◍°∇°◍)ノ゙,还有一个课程设计和一片文档的我…..别看剧了!!

猜你喜欢

转载自blog.csdn.net/Srain13/article/details/80717353