How Tomcat works 14: Service 和 Server
一、Server
1. 总体架构位置
2. Server的设计目的
Server提供了优雅的启动停止所有内部组件的功能,有了server,无需再单独启动connector和Container
3. Server具体内部功能
server的许多内部方法都可以配置在server.xml文件中。可以包含0个到多个Service。Server的生命周期关联四个方法:initialize, start, stop,await(用于等待某个端口如8085的stop命令,收到则执行stop)
二、Service
1. 概述:
一个service通常可以有一个Container和多个connectors
三、带有server,service的bootStrap代码
Engine engine = new StandardEngine();
engine.addChild(host);
engine.setDefaultHost("localhost");
Service service = new StandardService();
service.setName("Stand-alone Service");
Server server = new StandardServer();
server.addService(service);
service.addConnector(connector);
// StandardService class's setContainer method calls
// its connectors' setContainer method
service.setContainer(engine);
// Start the new server
if (server instanceof Lifecycle) {
try {
server.initialize();
((Lifecycle) server).start();
server.await();
// the program waits until the await method returns,
// i.e. until a shutdown command is received. }
catch (LifecycleException e) {
e.printStackTrace(System.out);
}
}
// Shut down the server
if (server instanceof Lifecycle) {
try {
((Lifecycle) server).stop();
} catch (LifecycleException e) {
e.printStackTrace(System.out);
}