前言: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