前面的博客中寫過了,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
每次請求,都會下單,測試成功!