改造工程为soa架构使用dubbo进行远程通信, zookeeper做dubbo的注册中心
SOA
面向服务的架构。也就是把工程拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。
工程改造
拆分工程
原来的结构
*-manager (打包方式pom)
|-- * -manager-dao (打包方式jar)
|-- * -manager-interface (打包方式jar)
|-- * -manager-pojo (打包方式jar)
|-- * -manager-service (打包方式jar)
|-- *- manager-web (打包方式war)
将表现层工程独立出来
*-manager-web
将原来的*-manager改为如下结构
*-manager (打包方式pom)
|-- * -manager-dao (打包方式jar)
|-- * -manager-interface (打包方式jar)
|-- * -manager-pojo (打包方式jar)
|-- * -manager-service(打包方式改为war)
服务层工程
第一步:把*-manager的pom文件中删除*-manager-web模块。
第二步:把*-manager-web文件夹移动到*-manager同一级目录。
第三步:* -manager-service的pom文件修改打包方式
<packaging>war</packaging>
第四步:在*-manager-service工程中添加web.xml文件
第五步:把*-manager-web的配置文件复制到*-manager-service中。
删除springmvc.xml
第六步:web.xml 中只配置spring容器。删除前端控制器
发布服务
在*-manager-Service工程中添加dubbo依赖的jar包
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
</dependency>
在spring的配置文件中添加dubbo的约束,然后使用dubbo:service发布服务
<!-- 使用dubbo发布服务 -->
<!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="e3-manager" />
<dubbo:registry protocol="zookeeper"
address="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183" />
<!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="cn.e3.service.ItemService" ref="itemServiceImpl" />
表现层工程
改造*-manager-web工程。
第一步:删除mybatis、和spring的配置文件。只保留springmvc.xml
第二步:修改*-manager-web的pom文件,
1.修改parent为*-parent
2.添加spring和springmvc的jar包的依赖
3.删除 *-mangager-service的依赖
4.添加dubbo的依赖
<!-- dubbo相关 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
</dependency>
5.*-mangager-web添加对 *-manager-Interface的依赖。
第三步:修改springmvc.xml,在springmvc的配置文件中添加服务的引用。
<!-- 引用dubbo服务 -->
<dubbo:application name="e3-manager-web"/>
<dubbo:registry protocol="zookeeper" address="192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"/>
<dubbo:reference interface="cn.e3.service.ItemService" id="itemService" />
第四步:在*-manager-web工程中添加tomcat插件配置。
<build>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<path>/</path>
<port>8081</port>
</configuration>
</plugin>
</plugins>
</build>