自定义服务容器
了解 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>