dubbo源码深度解读三之container模块

本文深入探讨了Dubbo的服务容器,包括Container接口及其SpringContainer、JettyContainer和Log4jContainer的实现。SpringContainer加载Spring配置并启动容器,JettyContainer用于状态报告但可能影响性能,而Log4jContainer自动配置日志。Dubbo通过JDK的ShutdownHook实现优雅停机,针对服务提供方和服务消费方有不同的停止策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:container为服务容器,用于部署运行服务,是一个Standlone的容器,以简单的Main加载Spring启动,因为服务通常不需要Tomcat/JBoss等Web容器的特性,没必要用Web容器去加载服务。

一,Container接口
这是一个基类的接口,这这个模块中,他的实现类有SpringContainer、Log4jContainer、JettyContainer、LogbackContainer。
看下源码:

@SPI("spring")
public interface Container {
   
   

    /**
     * start.
     */
    void start();

    /**
     * stop.
     */
    void stop();

}

可以发现,它有一个SPI注解,这个在common模块中已经说明了,接下来看它模块中三个实现类

二,Spring Container
主要指定了默认的配置文件路径(自动加载META-INF/spring目录下的所有Spring配置),通过ClassPathXmlApplicationContext来启动spring容器。
由于实现了Container接口,那么在resources下面找到com.alibaba.dubbo.container.Container文件中,可以看到spring=com.alibaba.dubbo.container.spring.SpringContainer,这是SPI扩展的相关知识。

三,Jetty Container
启动一个内嵌Jetty,用于汇报状态,但是在大量访问页面时,会影响服务器的线程和内存
配置:(配在java命令-D参数或者dubbo.properties中)

 dubbo.jetty.port=8080 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值