首先,黑體標出
官方不推薦使用web容器進行dubbo的啟動
但是,有些時候,我們不采用他們的建議。
背景:
之前用的dubbo項目,是由main函數啟動的,每次發布項目,需要啟動兩項: 1、 tomcat啟動web項目;2、 jar 啟動 dubbo 項目。
調整目標:使用 tomcat 啟動 web + dubbo 項目,一次啟動。
代碼在上一篇文章的示例代碼上進行改造。
http://www.cnblogs.com/fri-yu/p/5981436.html
那么,根據官方的提示,我們使用 spring 啟動dubbo。
首先,添加一個空的 WEB 項目然后在 web.xml 里面配置 spring 的啟動。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>Archetype Created Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring/root.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>
將項目進行簡單分層,分為 WEB 、 RPC 、RPC-IMPL , 使用tomcat 啟動 WEB 層,將 RPC 層的 jar 包發布出去給別的項目用於 dubbo 調用的依賴。
在 RPC 層實現 RPC 接口及 consumer 文件的提供
在 IMPL 層,依賴 RPC 層,並實現 RPC 層中的接口,然后配置相應的 provider 文件
在 WEB 層,依賴 IMPL 層,引入 provider 文件,用於啟動 dubbo 服務。
啟動項目后訪問項目:
(普通的web項目,簡陋了點)
在dubbo-admin中查看服務
再建一個springMVC 的 WEB 項目對剛才發布並啟動的 dubbo 項目進行測試
首先,依賴 RPC 的 jar 包。(把 RPC 層的 jar 包發布到本地倉庫或者私服中即可)
然后,引入 consumer 文件,以調用 RPC 層提供出來的接口。
寫一個 controller , 注入 RPC 層提供的接口。
啟動該web項目,進行訪問:
啟動 dubbo 的 web 項目后台打印:
示例代碼位置:
povider
https://github.com/fri-yu/JavaLearn/tree/master/dubbo/20171027/provider
https://files.cnblogs.com/files/fri-yu/provider.zip
consumer
https://github.com/fri-yu/JavaLearn/tree/master/dubbo/20171027/comsumer/web