前面的博客中写过了,maven构建项目,整合ssm,可是那个整合几乎没有业务逻辑,纯粹的一个调用,如今想将传统的mvc项目改造为一个dubbo项目,以前的那个例子不可以知足,须要将原有的simplemavendemo进行改造,将业务明确的区分出来,在用改造后的mvc项目为基础,改形成一个dubbo项目,咱们以一个电商项目为例html
代码地址:https://gitee.com/liuhuxiang/mvc-servicegit
逻辑:首先用户登陆,而后选择产品,建立订单,实现订单交易,最后查看订单信息web
mvc-service(项目结构)数据库
----common (公共模块)apache
----controller api
----order(订单模块)tomcat
----product (产品模块) mvc
----trade (交易模块) app
----user(用户模块)dom
代码地址:https://gitee.com/liuhuxiang/dubbo-soa
soa-parent(项目结构,源码叫dubbo-parent,模仿一下,叫soa-parent)
soa-parent
----soa-common
----soa-consumer-web
----soa-order (包含 soa-order-api soa-order-core)
----soa-product (包含 soa-product-api soa-product-core)
----soa-trade (包含 soa-trade-api soa-trade-core)
----soa-user (包含 soa-user-api soa-user-core)
改造步骤
1 建立项目 groupId:com.soa artifactId:soa-parent 2 建立module 以user为例子 soa-user-api soa-user-core 3 先改动soa-user-api 只有domain 和facade 4 在改动soa-user-core 将mvc user中剩余东西移入,即facadeImpl core mapper 5 pom文件迁移 先移动parent中的pom,去掉servlet,在移动soa-user-core中的pom,去掉version,同时依赖soa-user-api(由于core中有facade实现) 6 迁移xml all.xml datebase.xml context.xml UserMapper.xml 7 拆分数据库 每一个模块对应一个数据库,User模块有本身的数据库 8 发布服务 user-provider.xml <bean ---> <dubbo service ---> 9 pom引入dubbo的坐标 parent和core中分别引入 10 dubbo的配置文件 dubbo.property 从源码中粘一份过来 11 写一份启动脚本 test类中写个main,具体内容从源码中粘贴
遇到的问题
问题1,一直报dubbo这个包找不到 问题2,单模块启动的时,一直报错NoClassDefFoundError org/apache/curator/RetryPoliy 这个缘由是使用zookeeper注册中心,而本地启动的时候,使用的是multicast,dubbo.registry.address=multicast://224.5.6.7:1234 参考 https://dubbo.gitbooks.io/dubbo-user-book/content/references/registry/multicast.html 问题3:idea的tomcat部署项目问题,一直被这个问题困扰,在tomcat的插件中,选择article,选择对应的war,由于war包才是部署的<packaging>war</packaging>,<packaging>pom</packaging>是别人依赖的,插件会自动检测为war的moudle,而后自动打包,因此即使你没有打包,在添加的时候,仍然是有war包可选,最后就是tomcat的启动问题了,有的时候,看着好像是启动了,实际上启动的是个空的tomcat,因此,打印日志就一点点,真正启动的时候,启动日志会打印不少 问题4:请求到了,可是500,jdbc链接失败,缘由在于,修改数据库配置,这里有两份,一份是在test里面,一份是在conf里面,要所有改掉,改完以后,全局搜素查下,有没有改全
发现四个拆分的模块都分别启动了,最后用tomcat启动soa-consumer-web,最后请求
http://localhost:8080/soa-consumer-web/test
每次请求,都会下单,测试成功!