SSM学习第六天:分布式开发Dubbo+zookeeper

之前的项目因为工作量不大,因此都是作为一个整体来开发。但实际上,在公司的项目中,基本上都是一个人负责一个模块,耦合性低。因此这次,我打算把自己之前的用户管理系统项目做一个重构,因为只是笔记,所以可能稍有瑕疵,还请见谅!

1.删除之前spring-security的内容

因为在这次开发过程中,spring-security是无法适用的,所以要提前删除

2.重新新建项目

重新新建一个parent项目,用于存放各个模块。并且,各个模块按照之前的代码一一对应复制粘贴过来。
项目目录如下:
SSM学习第六天:分布式开发Dubbo+zookeeper_第1张图片
其中,除了ssm_ex_web需要勾选webapp以外,其它所有的都不需要勾选,直接新建即可。

3.项目的迁移

将之前的项目代码与新项目的模块一一对应

bean层

SSM学习第六天:分布式开发Dubbo+zookeeper_第2张图片

dao层及其pom.xml

SSM学习第六天:分布式开发Dubbo+zookeeper_第3张图片

ssm_ex_service层

该层对应之前的业务层接口,是之后需要暴露给Dubbo和zookeeper的
其内容及pom.xml如下:
SSM学习第六天:分布式开发Dubbo+zookeeper_第4张图片

ssm_ex_service_impl

该模块对应之前的业务层实现类,也是之后需要暴露给Dubbo和zookeeper的
其内容及pom.xml如下:
SSM学习第六天:分布式开发Dubbo+zookeeper_第5张图片
相较于之前的项目,这次该层多了一个App类,且resources中的一些配置也有改变
App类:

package com.ex.service.impl;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.io.IOException;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args ) throws IOException {
            ClassPathXmlApplicationContext context =
                    new ClassPathXmlApplicationContext("classpath:spring-context.xml");
            context.start();
            System.in.read();
      /*  synchronized (App.class) {
            while (true) {
                try {
                    App.class.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }*/
    }
}

ssm_ex_web

该模块对应原先的controller,是本次的消费者
其内容及其pom.xml如下:
SSM学习第六天:分布式开发Dubbo+zookeeper_第6张图片
该部分主要的不同还是在resources的配置文件中。

parent的pom.xml

版本号及依赖如下:


        UTF-8
        1.7
        1.7
        
        5.0.2.RELEASE
        
        3.2.6
        
        1.7.7
        1.2.17
        0.9.5.2
        1.1.2
        5.0.1.RELEASE
    

    
        
            junit
            junit
            4.11
            test
        
        
        
            org.springframework
            spring-core
            ${spring.version}
        

        
            org.springframework
            spring-web
            ${spring.version}
        
        
            org.springframework
            spring-oxm
            ${spring.version}
        
        
            org.springframework
            spring-tx
            ${spring.version}
        

        
            org.springframework
            spring-jdbc
            ${spring.version}
        

        
            org.springframework
            spring-webmvc
            ${spring.version}
        
        
            org.springframework
            spring-aop
            ${spring.version}
        

        
            org.springframework
            spring-context-support
            ${spring.version}
        

        
            org.springframework
            spring-test
            ${spring.version}
        
        
        
            org.mybatis
            mybatis
            ${mybatis.version}
        
        
        
            org.mybatis
            mybatis-spring
            1.2.2
        
        
        
            javax
            javaee-api
            7.0
        

        
        
            mysql
            mysql-connector-java
            5.1.30
        
        
        
            commons-dbcp
            commons-dbcp
            1.2.2
        
        
        
            jstl
            jstl
            1.2
        
        
        
        
            log4j
            log4j
            ${log4j.version}
        


        
        
            com.mchange
            c3p0
            ${c3p0.version}
        

        
            taglibs
            standard
            ${taglibs.version}
        

        
            org.slf4j
            slf4j-api
            ${slf4j.version}
        
        
            org.slf4j
            slf4j-log4j12
            ${slf4j.version}
        

        
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        
        
        
            javax.servlet.jsp
            javax.servlet.jsp-api
            2.3.1
            provided
        

        
            com.github.pagehelper
            pagehelper
            5.1.2
        

        
        
            
            
            
        
        
            
            
            
        
        
            
            
            
        
        
            
            
            
        
        
        
            com.alibaba
            dubbo
            2.5.3
            
                
                    spring
                    org.springframework
                
            
        

        
            org.apache.zookeeper
            zookeeper
            3.4.6
        
        
            com.github.sgroschupf
            zkclient
            0.1
        

        
    

4.zookeeper的安装配置

下载zookeeper之后,在其conf中加入zoo.cfg文件
SSM学习第六天:分布式开发Dubbo+zookeeper_第7张图片
zoo.cfg:

# 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=D:\\zookeeper\\store
# 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

其中,需要按照zoo.cfg中,按如下地址新建文件夹
在这里插入图片描述
然后,打开zookeeper的bin文件夹,以管理员身份运行zkServer.cmd
SSM学习第六天:分布式开发Dubbo+zookeeper_第8张图片
SSM学习第六天:分布式开发Dubbo+zookeeper_第9张图片
项目运行过程中要一直保持该cmd打开,不要关闭!

项目执行

1.记得给bean层的类都继承Serializable,如:
SSM学习第六天:分布式开发Dubbo+zookeeper_第10张图片
这样才会将实体类写入内存。
2.如果项目之前已经有target文件夹,需要将所有target文件夹全部删除
3.运行App类
SSM学习第六天:分布式开发Dubbo+zookeeper_第11张图片
同样项目运行过程中要保持App类的运行
4.重新配置一个tomcat,用来运行ssm_ex_web
在这里插入图片描述
5.tomcat运行,项目成功执行!
至此,分布式开发Dubbo+zookeeper基本完成!

你可能感兴趣的:(SSM,分布式开发,Dubbo,zookeeper,SSM,分布式开发,Dubbo,zookeeper)