Tomcat架构
Service
如果不配置Service,Tomcat可以正常启动,日志也不抛异常。
如果Service配置重复了,即name相同,则相同Service下面的子容器会合并。
Connector
可以配置不同的协议,不同的端口,访问同一个应用。如果端口配重复了,则启动日志会抛异常java.net.BindException: 地址已在使用,后面的Connector配置无效。如果Service里面不配置Connector,Tomcat可以正常启动,日志也不抛异常,但是对应的service无法访问。
Engine
属性defaultHost的值如果不在其子容器Host中,则Tomcat可以正常启动,启动日志提示警告 [main] org.apache.catalina.mapper.MapperListener.findDefaultHost Unknown default host [localhost002] for service。但是当Engine在其Host子容器中找不到与HTTP请求Host首部相匹配的Host子容器时,会使用defaultHost指定的子容器,此时会报错。
如果不配置Engine,则Tomcat可以正常启动,日志也不抛异常,但是访问对应的Service时,页面会报500异常,后端日志会抛NullPointerException。
如果一个Service配置了多个Engine,则Tomcat可以正常启动,日志也不抛异常,后面的Engine配置会覆盖前面的Engine配置。
Host
如果不配置Host,Tomcat可以正常启动,日志也不抛异常,但是对应的service无法访问。
如果Host配置重复了,则Tomcat无法启动,后台日志抛异常java.lang.IllegalArgumentException: addChild: Child name 'localhost001' is not unique。
Context
如果配置的Context不存在,则Tomcat无法启动,后台日志抛异常
如果Context配置重复了,即不同Context的path属性值一样,但是docBase的值不一样,则Tomcat无法启动,后台日志抛异常java.lang.IllegalArgumentException: addChild: Child name 'path001' is not unique。
网友评论