Dubbo : 传统工程改造(二)
来源:互联网 发布:pkpm绿色建筑设计软件 编辑:程序博客网 时间:2024/05/06 17:05
目录
- 目录
- 传统工程为什么改造
- 改造思路
- 项目源码
传统工程为什么改造
引用官方文档的说明:
改造思路
对于一个MVC开发模式的项目,我们需要将CV层放在一个项目中,而M单独放在一个项目中.中间接口约定需要一个单独的项目打成jar包形式分别引入.
一个简单的例子(省略了DB相关操作):
UserService.java
public interface UserService { public String getUser(String username);}
UserServiceImpl.java
@Service("userFacede")public class UserServiceImpl implements UserService{ Logger log = Logger.getLogger(UserServiceImpl.class); public String getUser(String username) { log.info("UserService Be Visited"); if (username.equals("milo")){ return "hello milo"; }else{ return "hello guest"; } }}
UserController.java
@Controllerpublic class UserController { Logger log = Logger.getLogger(UserController.class); @Autowired private UserService userService; @RequestMapping("/user") public String User(String username, HttpServletRequest request, HttpServletResponse response){ log.info("userController Be Visited"); request.setAttribute("username",userService.getUser(username)); return "user"; }}
要改成Dubbo项目,我们需要将业务逻辑层与控制层+试图层分离,所以我们将项目改成如下样子:
- dubbodemo-parent : 父项目,定义jar包版本号,聚合所有maven项目(module)等.
- dubbodemo-facede : 定义接口,这个项目是要打成jar包分别被dubbodemo-service和dubbodemo-web引用的
- dubbodemo-service : 只做逻辑实现,也就是dubbo中的生产者
dubbodemo-web : 负责页面跳转及渲染,也就是dubbo中的消费者
分别展开讲下这几个项目:
dubbodemo-facede : 这个项目是不需要引入spring框架的.定义好接口,pom.xml中jar的打包方式就可以了.
dubbodemo-service : 需要引入 dubbodemo-facede项目(module),pom.xml:
<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"> <parent> <artifactId>dubbodemo-parent</artifactId> <groupId>cn.milo.dubbodemo</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>dubbodemo-service</artifactId> <packaging>war</packaging> <name>dubbodemo-service</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>cn.milo.dubbodemo</groupId> <artifactId>dubbodemo-facede</artifactId> <version>${dubbodemo-facede.version}</version> </dependency> <!-- dubbo --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> </dependency> <!-- Zookeeper--> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> </dependency> <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </dependency> <!-- Spring Begin --> . . . <!-- Spring End --> </dependencies></project>
dubbo-provider.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="gw-service-user" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry protocol="zookeeper" address="47.94.81.**:2181" /> <!-- 用dubbo协议在20880端口暴露服务 --> <dubbo:protocol name="dubbo" port="20880" /> <!-- 用户服务接口 --> <dubbo:service interface="cn.milo.dubboservice.UserService" ref="userFacede" /></beans>
dubbodemo-web: 同样需要引入 dubbodemo-facede项目(module),pom.xml和dubbodemo-service一样
dubbo-consumer.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="edu-web-boss" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <!-- 注册中心地址 --> <dubbo:registry protocol="zookeeper" address="47.94.81.162:2181" /> <!-- 用户服务接口 这里的id可以随便写哈 --> <dubbo:reference interface="cn.milo.dubboservice.UserService" id="admin" check="false" /></beans>
项目源码
http://download.csdn.net/download/shangmingtao/9983768
阅读全文
0 0
- Dubbo : 传统工程改造(二)
- 分布式架构学习之:001--使用Dubbo对传统工程进行服务化改造
- dubbo对传统项目服务化改造
- dubbo改造旧工程(ssm/ssh)
- Dubbo > Dubbo服务化改造
- dubbo(二)普通项目dubbo服务化改造+provider构建为jar包运行
- dubbo对传统ssm进行服务化改造的思路以及一些分布式工具实现的思路
- 【Dubbo分布式服务框架】5.传统测试工程的搭建1
- dubbo项目改造(一)
- Dubbo(二)聚合工程之实体类,通用Parent Demo
- 老工程改造为MAVEN工程(简单改造)
- 关于Jeecg互联网化dubbo改造方案
- dubbo demo工程
- dubbo工程结构分析
- 如何以互联网思维改造传统烟酒店
- 传统定时器(二)
- Dubbo系列(十二)Dubbo之改造Dubbo,使其能够兼容Spring 4注解配置
- Windows 2003 FOR IDES ECC6改造工程
- MySQL表空间碎片
- 开发中的一些错误及解决办法
- ubuntu12.04 出现error: openssl/ssl.h: No such file or directory的解决方法
- NOIP模拟9.17(TYVJ NOIP2017模拟赛D2)
- java.lang.NullPointerException: Attempt to invoke virtual method 'void com.moreunion.zhenghao.ui.pr
- Dubbo : 传统工程改造(二)
- 圆周运动(运动小DEMO)
- url常见操作
- xcode7模拟器不见了,为什么?
- 2017年物联网现状及8大发展趋势分析
- java中的单例模式
- VueJs2.0建议学习路线
- 安装SQL SERVER2016或者2017时 安装程序无法与下载服务器联系 Microsoft R Server
- opus编解码的使用