前面已經介紹了dubbo是什么,用來做什么,以及監控中心zookeeper的安裝,接下來講講將其應用到tomcat工程項目中……
(一)項目結構展示
1、 兩個maven同級項目,一個發布服務,一個使用……
(二)准備工作,添加依賴、約束文件
1、分別對兩個工程添加依賴,
這里注意,因為加入dubbo依賴,會傳遞其依賴的spring2.x的版本依賴,而本maven工程已經添加spring4.x的依賴,所以這里要除去……
2、約束
(三)開啟zookeeper監控中心服務
(四)配置文件以暴露和引用服務
1、service服務層發布服務
第一項是所起的名字,接着是注冊中心服務的主機地址及端口,第三項是暴露服務的端口,
如果還有其他工程同時發布服務,那么要另外使用別的端口號,最后是發布的服務的接口規范,要提供實現類以引用對象。。。
2、web表現層引用服務
第一項名字,接着zookeeper注冊中心地址,最后是要引用的服務。。。
(五)進行網絡傳輸的pojo要實現序列化接口
implements Serializable
(六)重新將maven工程安裝到本地倉庫
maven install
(七)tomcat插件的測試使用
將表現層工程pom文件改造,端口不要同服務層的8080,運行時,先運行服務層再運行表現層,tomcat7:run。。。
運行結果:
(八)可能出現的異常
控制台打印:com.alibaba.dubbo.remoting.TimeoutException
頁面打印: Request processing failed; nested exception is com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method getItemById in the service cn.e3mall.service.ItemService. Tried 3 times of the providers [192.168.244.1:20880] (1/1) from the registry 192.168.244.128:2181 on the consumer 192.168.244.1 using the dubbo version 2.5.3. Last error is: Invoke remote method timeout.
解決: 在服務和表現層的spring配置文件中加入如下:
其實同個問題可能導致的原因有千百種,這里我只是利用此種方法而又剛好解決了而已……
最后,
由於使用不多,接觸少,如有錯漏的地方歡迎指出、批評,多謝!