自定义服务容器

了解 Dubbo 3 中的服务自定义容器类型和用法

功能描述

Dubbo 3 的服务容器是一个独立的启动程序,因为后台服务不需要 Tomcat 或 JBoss 等 Web 容器的功能。如果您坚持使用 Web 容器加载服务提供者,则会增加复杂性并浪费资源。因此,服务通常不需要 Tomcat/JBoss 等 Web 容器的功能,也不需要使用 Web 容器加载服务。

Dubbo3 服务容器只是一个简单的 Main 方法,并加载一个简单的 Spring 容器来暴露服务。

服务容器的加载内容可以扩展,内置了 spring、jetty、log4j 等,可以通过 <a href="../../../reference-manual/spi/description/container">容器扩展点</a> 进行扩展。配置在 java 命令的 -D 参数或 <code>dubbo.properties</code> 中配置。

使用场景

Web 容器主要用于响应 http 请求和静态页面。Dubbo 服务提供者仅对外提供 dubbo 服务。它不适合使用 Web 容器。作为单独的 dubbo 服务提供者,它只需要通过 main 方法加载一个简单的 spring 容器来暴露服务。

如何使用

Spring 容器

  • 自动加载 <code>META-INF/spring</code> 目录下的所有 Spring 配置。

  • 配置 spring 配置加载位置

    dubbo.spring.config=classpath*:META-INF/spring/*.xml
    

Jetty 容器

  • 启动嵌入式 Jetty 以报告状态。
  • 配置
    • <code>dubbo.jetty.port=8080</code>:配置 jetty 启动端口
    • <code>dubbo.jetty.directory=/foo/bar</code>:配置一个可以通过 jetty 直接访问的目录来存储静态文件
    • <code>dubbo.jetty.page=log,status,system</code>:配置要显示的页面,默认加载所有页面

Log4j 容器

  • 自动配置 log4j 的配置。当启动多个进程时,日志文件会自动按进程划分到不同的目录中。
  • 配置
    • <code>dubbo.log4j.file=/foo/bar.log</code>:配置日志文件路径
    • <code>dubbo.log4j.level=WARN</code>:配置日志级别
    • <code>dubbo.log4j.subdirectory=20880</code>:配置多进程启动时的日志子目录,避免冲突

容器加载说明

默认情况下只加载 spring

java org.apache.dubbo.container.Main

通过 main 函数参数传入要加载的容器

java org.apache.dubbo.container.Main spring jetty log4j

通过 JVM 启动参数传入要加载的容器

java org.apache.dubbo.container.Main -Ddubbo.container=spring,jetty,log4j

通过类路径下 <code>dubbo.properties</code> 配置传入要加载的容器

dubbo.container=spring,jetty,log4j

上次修改时间:2023 年 1 月 2 日:<a href="https://github.com/apache/dubbo-website/commit/95a9f4f6c1cbb4425fe12411cd046f4463fee6b5">增强英文文档 (#1798) (95a9f4f6c1c)</a>