Server和Service
Server接口
Server接口的实例,表示Catalina整个servlet容器,囊括了所有组件。
服务器组件提供了一种非常优雅的方法来启动/关闭整个系统,不再对连接器和容器分别操作:
当启动服务器组件时,它会启动其中所有的组件,然后就无限期地等待关闭命令;
如果需要关闭服务器组件,向指定端口发送一条关闭命令,服务器组件接收到关闭命令后,就会关闭其中的所有组件。
1 | public interface Server { |
StandardServer类
StandardServer类有4个与生命周期有关的方法:initialize()/start()/await()/stop()
initialize()方法
initialize()方法主要用来初始化其中的服务组件。1
2
3
4
5
6
7
8
9
10public void initialize() throws LifecycleException {
if (initialized)
throw new LifecycleException (
sm.getString("standardServer.initialize.initialized"));
initialized = true;
// Initialize our defined Services
for (int i = 0; i < services.length; i++) {
services[i].initialize();
}
}
start()/stop()方法
与initialize()类似,触发相应的事件,循环遍历逐一启动其中service组件。
await()方法
await()方法负责等待关闭整个tomcat部署的命令。
await()方法创建一个监听默认为8005端口的server socket,循环调用serverSocket.accept()方法等待连接,得到其中字符串时与约定的关闭命令字符串相比较,
如果匹配成功,则跳出循环,结束await()方法。
Service接口
Service接口实例是一个或多个组成的一组连接器共享一个单独的servlet容器来处理接受到的请求。这样的设定允许了一个http和一个https连接器共享同一个web应用程序。
StandardService类
connector和container
StandardService实例中有两种组件,connector和container,其中servlet容器只有一个,而连接器可以多个,使tomcat可以为多种不同的协议提供服务。
StandardService类的属性:1
2private Container container = null;
private Connector connectors[] = new Connector[0];
与生命周期有关的方法
initialize():循环遍历调用了connectors[i].initialize()
来初始化所有的连接器。
start()/stop():触发相关事件,并循环遍历启动/关闭其中连接器以及容器。