HTTP 協定

功能說明

基於 HTTP 表單的遠端呼叫協定,由 Spring 的 HttpInvoker 實作,2.3.0 以上版本支援。

  • 連線數:多連線
  • 連線方式:短連線
  • 傳輸協定:HTTP
  • 傳輸方式:同步傳輸
  • 序列化:表單序列化
  • 適用範圍:進出參數數據包大小混合,提供者數量多於消費者,瀏覽器可查看,參數可通過表單或 URL 傳遞,目前不支持文件傳輸。
  • 適用場景:需同時供應用程式和瀏覽器 JS 使用的服務。

限制

  • 參數和回傳值必須符合 Bean 規範

使用場景

HTTP 短連線,標準化易讀的協定,易於與外部系統對接,適用於上層業務模組。

使用方法

從 Dubbo 3 開始,Http 協定不再內嵌於 Dubbo 中,需要單獨引入一個獨立的 模組

<dependency>
    <groupId>org.apache.dubbo.extensions</groupId>
    <artifactId>dubbo-rpc-http</artifactId>
    <version>1.0.0</version>
</dependency>

配置協定

<dubbo:protocol name="http" port="8080" />

配置 Jetty 伺服器(預設)

<dubbo:protocol ... server="jetty" />
<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)