Webservice 協議
功能說明
基於 WebService 的遠端呼叫協定,基於 Apache CXF 的 frontend-simple
和 transports-http
實作。支援 2.3.0
及以上版本。
CXF 是 Apache 的一個開源 RPC 框架,由 Xfire 和 Celtix 合併而成。
- 連線數量:多連線
- 連線方式:短連線
- 傳輸協定:HTTP
- 傳輸方式:同步傳輸
- 序列化:SOAP 文字序列化
- 適用場景:系統整合、跨語言呼叫
它可以與原生 WebService 服務互通,也就是
- 提供者使用 Dubbo 的 WebService 協定暴露服務,消費者直接使用標準 WebService 介面呼叫,
- 或者提供者使用標準 WebService 暴露服務,消費者使用 Dubbo 的 WebService 協定呼叫。
限制
- 參數和返回值需要實作
Serializable
介面 - 參數盡量使用基本類型和 POJO
使用場景
發布服務(內部/外部),不論客戶端類型或效能,建議使用 webservice。伺服器已確定使用 webservice,客戶端無法選擇,必須使用 webservice。
使用方法
依賴關係
從 Dubbo 3 開始,Webservice 協定不再內嵌於 Dubbo 中,需要單獨引入一個獨立的 模組。
<dependency>
<groupId>org.apache.dubbo.extensions</groupId>
<artifactId>dubbo-rpc-webservice</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-simple</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>2.6.1</version>
</dependency>
配置協定
<dubbo:protocol name="webservice" port="8080" server="jetty" />
配置預設協定
<dubbo:provider protocol="webservice" />
配置服務協定
<dubbo:service protocol="webservice" />
多埠
<dubbo:protocol id="webservice1" name="webservice" port="8080" />
<dubbo:protocol id="webservice2" name="webservice" port="8081" />
直接連線
<dubbo:reference id="helloService" interface="HelloWorld" url="webservice://10.20.153.10:8080/com.foo.HelloWorld" />
###WSDL
http://10.20.153.10:8080/com.foo.HelloWorld?wsdl
Jetty 伺服器(默認)
<dubbo:protocol ... server="jetty" />
Servlet 橋接伺服器(推薦)
<dubbo:protocol ... server="servlet" />
配置 DispatcherServlet
<servlet>
<servlet-name>dubbo</servlet-name>
<servlet-class>org.apache.dubbo.remoting.http.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dubbo</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
如果使用 servlet 來分派請求
- 協定端口
<dubbo:protocol port="8080" />
必須與 servlet 容器的端口相同。- 協定的上下文路徑
<dubbo:protocol contextpath="foo" />
必須與 servlet 應用程式的上下文路徑相同。
上次修改時間:2023 年 2 月 22 日:合併重構網站 (#2293) (4517e8c1c9c)