首先,黑體標出html
官方不推薦使用web容器進行dubbo的啓動java
可是,有些時候,咱們不採用他們的建議。git
背景:github
以前用的dubbo項目,是由main函數啓動的,每次發佈項目,須要啓動兩項: 一、 tomcat啓動web項目;二、 jar 啓動 dubbo 項目。web
調整目標:使用 tomcat 啓動 web + dubbo 項目,一次啓動。spring
代碼在上一篇文章的示例代碼上進行改造。tomcat
http://www.cnblogs.com/fri-yu/p/5981436.htmlapp
那麼,根據官方的提示,咱們使用 spring 啓動dubbo。ide
首先,添加一個空的 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